在VB.net下可以定义拷贝构造函数了,定义方法为:
class sam
sub new (byval obj as sam)
'在此处编写拷贝的操作
end sub
end class
虽然也称之为拷贝构造函数,但与C++下的概念还是有差别的。
在C++下有一默认的浅拷贝构造函数,可以实现按位赋值,而在VB.Net下需要手工实现。
不过关于浅拷贝与深拷贝的概念还是一样的。
因为不提供默认拷贝构造函数,所以vb.net下的拷贝构造函数没有太大意义。微软也建议采用实现ICloneable接口来实现对象的拷贝,而不是什么拷贝构造函数。
不过实现因为ICloneable.Clone方法返回的是Object类型,所以需要有一个强制类型转换的过程(采用DirectCast或者Ctype)。
这也许算是VB.NET中的一个小小的瑕疵吧!