当前位置: 代码迷 >> VB Dotnet >> [vb.net2013]结构有关问题
  详细解决方案

[vb.net2013]结构有关问题

热度:88   发布时间:2016-04-25 02:16:15.0
[vb.net2013]结构问题
我看了对结构的一些说明。
难以理解的是  {由于结构是值类型,每个结构变量都永久地绑定到一个单独的结构实例。  而类是引用类型,对象变量可在不同的时间引用各种类实例。 此区别在下列方面影响结构和类的使用}

这样说一个结构变量只能访问一个结构实例并绑定?
结构变量不能同时引用到多个实例?

我最难理解的是《每个结构变量都永久地绑定到一个单独的结构实例》这个如何解释呢?

希望代码示例来说明问题。

------解决方案--------------------
结构体内部可以包含引用类型,但是结构体变量本身是值类型,只代表本身。

比如说,
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,就行了。