首页 / C# / C# 深拷贝 浅拷贝 值类型 引用类型
C# 深拷贝 浅拷贝 值类型 引用类型
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C# 深拷贝 浅拷贝 值类型 引用类型,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1428字,纯文字阅读大概需要3分钟。
内容图文
1.引用类型的对象变量赋值的时候是指向同一个对象
2.在平时的开发中很少自己去写结构体,他是一种值类型的数据。对于结构,不像类那样存在继承,一个结构体不能从另一个结构或类继承。但是结构体从基类Object继承
3.如果拷贝的时候共享被引用的对象就是浅拷贝,如果被引用的对象也拷贝一份出来就是深拷贝。(深拷贝就是说重新new一个对象,然后把之前的那个对象的属性值在重新赋值给这个用户)
4.什么是“引用类型”:引用类型派生自System.Object
5.什么是“值类型”:值类型均隐式派生自System.ValueType(ValueType其实也是继承自Object,不过是特立独行的一个分支)
6.值类型有哪些:数值类型(int、long、double、float、char)、bool、结构体、枚举。(在平时写的时候看不到Int32继承自ValueType的原因是编译器帮我们进行了处理)
7.引用类型有哪些字符串、数组、类、接口等
8.区别(主要):
引用类型变量的赋值只复制对对象的引用;引用类型在堆内存(malloc);
值类型变量赋值会拷贝一个副本;值类型在栈内存;值类型一定是sealed;
class Program
{
static void Main(string[] args)
{
Person p1 = new Person();
p1.Name = "sessie";
p1.Age = 18;
Person p2 = p1;//让p2指向p1当前所指的对象 两个指向的一致
p2.Age = 66;
Console.WriteLine(p1.Age);//66
Person p3 = new Person();//深拷贝 拷贝了一份出来
p3.Age = p1.Age;
p3.Name = p1.Name;
Dog d1 = new Dog();
d1.Name = "ww";
d1.Age = 4;
Dog d2 = d1;
d1.Age = 66;
Console.WriteLine(d2.Age);//4 深拷贝
Console.ReadKey();
}
}
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
struct Dog
{
public string Name { get; set; }
public int Age { get; set; }
}
内容总结
以上是互联网集市为您收集整理的C# 深拷贝 浅拷贝 值类型 引用类型全部内容,希望文章能够帮你解决C# 深拷贝 浅拷贝 值类型 引用类型所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。