我看了对结构的一些说明。
难以理解的是 {由于结构是值类型,每个结构变量都永久地绑定到一个单独的结构实例。 而类是引用类型,对象变量可在不同的时间引用各种类实例。 此区别在下列方面影响结构和类的使用}
这样说一个结构变量只能访问一个结构实例并绑定?
结构变量不能同时引用到多个实例?
我最难理解的是《每个结构变量都永久地绑定到一个单独的结构实例》这个如何解释呢?
希望代码示例来说明问题。
------解决方案--------------------
结构体内部可以包含引用类型,但是结构体变量本身是值类型,只代表本身。
比如说,
class A
{
public int i = 1;
}
A a1 = new A();
A a2 = a1;
a2.i = 2;
Console.WriteLine(a1); // 2
这说明a1 a2是引用,a2 = a1让a2指向了a1引用的对象。
但是结构体不同,还是上面的代码,把class写成struct,再运行,输出1。
这是因为a2 = a1的时候,a2并非指向了a1,而是将a1完全拷贝了一份,a2代表那个拷贝。
换一句话说,对于结构体,一个变量代表一个独立的存储的对象实例。
------解决方案--------------------
2楼正解,你把
Console.WriteLine(a1); 改成
Console.WriteLine(a1.i);就知道了
结构不能初始化实例,public int i = 1;
改成public int i ; 默认值会是0,就行了。