[vb] view plain copy 在CODE上查看代码片派生到我的代码片
'方法一
Dim a = New ClassaA()
'方法二
Dim a as ClassA
a= New ClassA()
有一段时间,我认为这是实例化类的方法之一,其实不然。这只是对实例化对象的引用,而不是对类的实例化。单看这行代码“Dim a = New ClassA()”其中包含4条信息:
1)右边的“New ClassA”,是以ClassA类为模板,在堆空间里创建一个ClassA类对象(也简称为ClassA对象)。
2)末尾的()意味着,在对象创建后,立即调用ClassA类的构造函数,对刚生成的对象进行初始化。构造函数是肯定有的。如果你没写,.Net会给你补上一个默认的构造函数。
3)左边的“ClassA a”创建了一个ClassA类引用变量。所谓ClassA类引用,就是以后可以用来指向ClassA对象的对象引用。
4)“=”操作符使对象引用指向刚创建的那个ClassA对象。
实例化类ClassA的正确表达式
[vb] view plain copy 在CODE上查看代码片派生到我的代码片
Dim a as New ClassA()
对象引用和对象实例的区别:
Dim a As ClassA,定义一个可以引用ClassA类型对象的变量a。这个a变量存在于栈上。
a=New ClassA()。New ClassA()创建ClassA实例对象,这个对象存在于托管堆上。然后(同时)让a引用(指向)这个对象。
a变量在栈上,而对象在托管堆上。
a储存的是对象的地址,而不是对象本身。