这个问题是非常有趣的问题,现在,我截取书的一段程序,通过结果来分析结构类型和对象的区别。
namespace aa{
class MyClass{ public int val; }
struct MyStruct{ public int val; }
class program{
static void Main( string[] args){ MyClass objectA=new MyClass(); MyClass objectB=objectA; objectA=10;objectB=20;
MyStruct structA=new MyStruct(); MyStruct structB=structA;MyStructA=30;MyStruct B=40;
最后一步,请4个值全部输出}
}
}
结果为:MyStructA=30;MyStructB=40;objectA=20;objectB=20
现在就有一个问题:objectA、B的值会相同,而MyStructA、B的值就不相同这是为什么呢?
对象是引用类型。在对象赋给变量时,实际上是把带有一个指针的变量赋给了该指针指向的对象。此时的两个变量中含有的指引是相同的。
而结构是值类型。其变量不包含指针,只是结构本身,于是执行了复制的操作。
wow,这么有趣的事情,而是躲在书上的一个边角,你是不是没有注意到呢?