C# 值类型 对象类型

来源:百度知道 编辑:UC知道 时间:2024/06/25 02:50:03
C#中的struct和class有什么区别?
我知道struct成员默认访问权限是public,class是private。
还有struct是值类型,class是对象类型。
值类型和对象类型又有哪些不同呢?
值类型不为null?
struct和class还有哪些不同?
如果要序列化,用struct和用class有什么不同?

一下仅是个人的感觉,请挑选着采纳【呵呵】:
(1)值类型和引用类型的区别:
值类型,
如int j,i=1;
j=i;//赋值操作
之后j的值也是1;
但是j的1也是在内存中独自开辟一块堆栈空间的,它不依附与i;
感觉就是系统在内存堆栈中为其分配了一块空间,值就存储在其中;

引用类型,
class A{
private int i;
A(int x){i=x}
};
A a1(3),a2; //创建和声明对象实例
a2=a1; //对象之间的赋值
赋值之后,a1和a2的字段i都是3;感觉上是a2指向了a1的字段i,即存在衣服关系。(其实这一点不是很清楚,呵呵)

(2)值类型不可以为null的
(3)struct和class
感觉struct是class的简化版,个人一直这样理解的,有时候struct的使用更方便,当然是它必须能满足需求的条件下!

呵呵,以上是个人的感觉,希望对楼主有所帮助!

值类型等于的时候会自动创建一块存储空间(内存)
而类(引用类型)等于时是传的引用直接把存储地址地址赋予给等于他的引用类型对象