幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 5969|回复: 10

[VB.net]关于New()和InitializeComponent()

[复制链接]
好人卡的 该用户已被删除
发表于 2007-9-28 23:34:36 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

8

主题

215

帖子

2223

积分

⑥精研

积分
2223
发表于 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会保证所有实例变量都初始化到它们的默认值.
例如说,
  1. Public Class SampCls
  2.     Public i As Integer
  3.     Public s As String
  4. End Class
复制代码
这么声明的一个类,虽然没有写构造器,但在构造新的实例时里面的实例变量够会被CLR执行默认初始化.所以,
Dim c As New SampCls之后,c.i等于0,c.s等于Nothing
回复 支持 反对

使用道具 举报

好人卡的 该用户已被删除
 楼主| 发表于 2007-9-29 01:51:12 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

8

主题

215

帖子

2223

积分

⑥精研

积分
2223
发表于 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 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

8

主题

215

帖子

2223

积分

⑥精研

积分
2223
发表于 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是满像的 ^ ^
回复 支持 反对

使用道具 举报

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
发表于 2007-9-29 09:20:39 | 显示全部楼层
别说c#了,从vc++ 2005开始,c++也可以用clr,也可以像vb.net一样所见即所得的写GUI。
忽然就vb.net了,真是台风一样啊 [s:5]
え~え~お!!!
回复 支持 反对

使用道具 举报

好人卡的 该用户已被删除
 楼主| 发表于 2007-9-29 11:03:17 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

8

主题

215

帖子

2223

积分

⑥精研

积分
2223
发表于 2007-9-29 15:25:41 | 显示全部楼层
VS2003里也有MC++,只是很丑而已...
新的C++/CLI还是相当有趣的.恩没错,一样可以拖放控件来制作GUI.说实在的在.NET上用C++/CLI很方便,专门去学VB.NET的必要性需要考虑清楚.

说着,刚才花了几分种做了这么个东西出来...应该说自己几乎什么代码都没写.

回复 支持 反对

使用道具 举报

好人卡的 该用户已被删除
 楼主| 发表于 2007-9-30 17:13:45 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-5-4 05:21 , Processed in 0.023361 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表