VB.net中类的实例化
假设有一个类,名字是myClass下面开始实例化DimabcAsmyClassabc=NewmyClass整个操作叫做对象实例化,那么请问:只做Dim操作,不定义New,...
假设有一个类,名字是myClass
下面开始实例化
Dim abc As myClass
abc = New myClass
整个操作叫做对象实例化,那么请问:
只做Dim操作,不定义New,叫什么?
为什么有的类不需要New,比如文件操作中的FileStream类。
谢谢!!
附上我个人的理解,不知是否正确:
Dim后,已经生成了一个对象,后面的“=”即赋值操作,New表示生成一个myClass的副本。FileStream则不用生成副本,而是需要赋值“数据流”。
总之,实例化包括2个步骤:生成、赋值。
不知是否可以这样理解?望指教。 展开
下面开始实例化
Dim abc As myClass
abc = New myClass
整个操作叫做对象实例化,那么请问:
只做Dim操作,不定义New,叫什么?
为什么有的类不需要New,比如文件操作中的FileStream类。
谢谢!!
附上我个人的理解,不知是否正确:
Dim后,已经生成了一个对象,后面的“=”即赋值操作,New表示生成一个myClass的副本。FileStream则不用生成副本,而是需要赋值“数据流”。
总之,实例化包括2个步骤:生成、赋值。
不知是否可以这样理解?望指教。 展开
1个回答
展开全部
1.不正确
Dim abc As myClass,定义一个可以引用myClass类型对象的变量abc。这个abc变量存在于栈上。
abc=New myClass。New myClass创建myClass实例对象,这个对象存在于托管堆上。然后(同时)让abc引用(指向)这个对象。
abc变量在栈上,而对象在托管堆上。
abc储存的是对象的地址,而不是对象本身。
看下面的代码
Dim a As myClass,b As myClass,c As myClass
a=New myClass
b=a
c=a
整个过程中只创建了一个myClass对象,位于托管堆上。
三个myClass类型的变量a、b、c位于栈上,都指向了这一个myClass对象
2.类的成员分 实例成员 和 静态成员
实例成员 必须在实例对象上调用
静态成员 可以直接调用,不需要实例对象。
Dim abc As myClass,定义一个可以引用myClass类型对象的变量abc。这个abc变量存在于栈上。
abc=New myClass。New myClass创建myClass实例对象,这个对象存在于托管堆上。然后(同时)让abc引用(指向)这个对象。
abc变量在栈上,而对象在托管堆上。
abc储存的是对象的地址,而不是对象本身。
看下面的代码
Dim a As myClass,b As myClass,c As myClass
a=New myClass
b=a
c=a
整个过程中只创建了一个myClass对象,位于托管堆上。
三个myClass类型的变量a、b、c位于栈上,都指向了这一个myClass对象
2.类的成员分 实例成员 和 静态成员
实例成员 必须在实例对象上调用
静态成员 可以直接调用,不需要实例对象。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询