好人卡的 发表于 2007-9-28 23:34:36

rednaxela 发表于 2007-9-29 01:01:09

VB.NET中一样有constructor.
C++/Java/C#中构造器的名字是以类名,并且没有返回类型(不是void,是没有).D中构造器是以this命名的.而VB.NET中,构造器的名字就是New(),方法类型是Sub.

顺带一提,VB.NET中的析构器是Finalize(),而且必须是这样的形式:
[访问修饰符] Overrides Sub Finalize()

问题二没太看懂...LZ大概没把意思表达清楚?
VB.NET是一种.NET Framework上的语言,运行在CLR上.而CLR会保证所有实例变量都初始化到它们的默认值.
例如说,
Public Class SampCls
    Public i As Integer
    Public s As String
End Class
这么声明的一个类,虽然没有写构造器,但在构造新的实例时里面的实例变量够会被CLR执行默认初始化.所以,
Dim c As New SampCls之后,c.i等于0,c.s等于Nothing

好人卡的 发表于 2007-9-29 01:51:12

rednaxela 发表于 2007-9-29 02:19:13

因为...Nothing不是null.它不只是null,它是VB6或之前的老VB中Null与Empty的合体物.判断的时候要用Is关键字而不可以使用等号/不等号

MSDN上的文档建议不要像LS的代码那样做重复的初始化.那个构造器要么不写,要么内容留空就行.现在这样等于多执行了一次初始化.

P.S. 我是想说,那个...我到前天为止一行VB.NET的代码都没写过.纯粹是在C#的基础上去回答问题的...

好人卡的 发表于 2007-9-29 02:48:44

rednaxela 发表于 2007-9-29 03:17:01

虽然不太清楚楼主学习VB.NET的动机是什么,不过如果并不是为了投入实际使用,而是为学习别的语言做基础的话,恐怕学习VB.NET并不是个好选择,除非原本就非常习惯于老VB的语法并希望到.NET的过渡更平滑些.
刚冒昧到楼主的blog去看了一下.似乎之前也有接触C++? 这VB.NET在很多方面跟C#用起来其实很像,相反与老VB还没那么像(跟老VB像只像在语法上了).而C#可以粗略认为是去掉了指针,增加了自动垃圾回收的内存管理,为安全考虑而加上了一些访问限制,然后再加上一堆新功能的C++.绕了这么个弯,给我的感觉就是从零学习VB.NET的难度并没比学习C++简单多少.
实际使用的时候当然是VB.NET简单,只是觉得是不是应该考虑清楚,VB.NET是否确实满足自己的需要并可以在自己的项目中实际应用? 还是说,相同的精力还是投入到C++去强化原有的基础更好?

Edit: 哦,不过在不使用{}的这点上ruby与VB是满像的 ^ ^

shawind 发表于 2007-9-29 09:20:39

别说c#了,从vc++ 2005开始,c++也可以用clr,也可以像vb.net一样所见即所得的写GUI。
忽然就vb.net了,真是台风一样啊

好人卡的 发表于 2007-9-29 11:03:17

rednaxela 发表于 2007-9-29 15:25:41

VS2003里也有MC++,只是很丑而已...
新的C++/CLI还是相当有趣的.恩没错,一样可以拖放控件来制作GUI.说实在的在.NET上用C++/CLI很方便,专门去学VB.NET的必要性需要考虑清楚.

说着,刚才花了几分种做了这么个东西出来...应该说自己几乎什么代码都没写.
http://img171.imageshack.us/img171/1983/cppcli00hy0.th.jpg
http://img241.imageshack.us/img241/1831/cppcli01lt0.th.jpg

好人卡的 发表于 2007-9-30 17:13:45

页: [1] 2
查看完整版本: [VB.net]关于New()和InitializeComponent()