>系列--《VB2005-菜根谭》注释版

实际作者的意图是解释一些VB2005(VS2005)相对于VB2003的高级特性,或者是一些2003中容易忽略的特性。以便帮助那些VB2003的同学快速升级到VB2005。

余过古刹,于残经败纸中拾得《VB2005-菜根谭》一录,似某一人或某一群人琐事记载,又似一些观点零散发布。翻视之,虽断断续续,然于身心性命之学,实有隐隐相发明者。亟携归,重加校雠,缮写成帙。 旧有序,文不雅驯,且于是书无关涉语,故芟之。著是书者为大师,究不知其为何许人也。

1.Partial:就是分部类型,VC#2005也支持。

2.未使用的引用如何快速去掉:VB2005支持把工程中未使用的引用去掉,方法是鼠标右键点击工程的属性,在引用一项中可以查看未使用的工程中未使用的引用。

3.Global:使您可以在已使用命名空间结构阻塞 .NET Framework 编程元素时对其进行访问。

4.多特性多尖括号:就是说VB2003中要这么写:<System.ComponentModel.DefaultValue(""), System.ComponentModel.Description("")> _ ,在2005中可以这么写:<System.ComponentModel.DefaultValue("")> <System.ComponentModel.Description("")> _ 。

5.未分配、未使用变量编译警告:这是一个改进。

6.Unsigned Integer:VB2005开始支持无符号的整型等。

7.尽量用Double不用Single:Double比Single快,因为Double在向CPU浮点寄存器存储或读取时,不需要转换,而Single要,当然后者节约内存。

8.LIKE 运算符:根据模式来比较字符串,result=string like Pattern。

9.IsNot运算符:比较两个对象引用变量 ,obj1 IsNot obj2,在2003中的写法是Not (obj1 Is obj2).

10.TryCast:类型转换操作,类似CType、DirectCast,但TryCast不引发异常,如果不能转化,TryCast返回Nothing。

11.数组允许指定To关键字:Dim arr(0 To 10) As Integer,有点无极(=无聊X2)的功能,左边必须从0开始。

12.Continue:Continue { Do | For | While } ,呵呵终于支持Continue了。

13.参数是引用类型时Byval和Byref的区别,你真的知道吗?:当参数是引用类型时,很多人不知道byval和byref的区别。

14.重新引发异常Throw ex or throw:Throw ex增加了一个错误堆栈,不好。

15.Save Project When Created OR not Save:类似VB6的功能,不必指定程序的保存路径,(对于测试一些代码很有用,不必再保存垃圾了),在option中设置。而VS2003中新建一个工程,上来就让你指定一个保存路径,VB6转到而来的人感觉怪怪的。

16.剪贴板循环Ctrl+Shift+V:这个VS2003中也有,但是很少有人用。

17.长方形模式选择Alt+鼠标:选中文本可以竖着选择,你试过没?VS2003中也有这个功能。

18.参数复制与粘贴Ctrl+Shift+Alt+P:试试这个功能吧,参数明了化,就这个功能。

19.BookMark Window:BookMark 列表窗口。

20.插入代码段 ? Tab 管理代码段Ctrl+K、Ctrl+B:代码段噢。

21.停靠拖动更有效:巨大的改进,我在VS2003中合并一些(或拆分)工具栏,要耗费力气,还事与愿违。

22.导出导入设置:保存VS2005的相关设置。

23.项目模板:模板的功能,类似VC6.0中的功能。

24.单步执行 逐语句(F11)、逐过程(F10)、跳出(Shift+F11)、运行到光标处(Ctrl+F10)、当前断点置于视图中(Alt+小键盘上的*):调试的快速方法,熟了就好,熟归熟,你重伤我,一样告你诽谤。

25.编辑并继续执行:可以不编译,编辑并继续执行,VS2003中没有,VB6中支持。

26.调试窗口:局部变量、自动变量、监视、调用堆栈,这个...

27.单元测试:支持内置的单元测试,类似NUnit,但可以根据你要测试的代码自动生成一些代码框架。

28.Get、Set定义不同作用域:比如一个属性,Get可以Public,Set可以Private的,怪吗?

29.运算符重载:终于支持运算符重载了,JAVA都不支持的噢.

30.事件选项卡:支持一些编译的事件,你可以做些后期的处理。

31.自定义事件:Custom Event,没有用过,不知道有什么好处。

32.Overrides自动生成代码:在子类中Overrides 基类中的方法会有智能提示,不必在到基类中去copy方法名了。

33.Using关键字:Using、End Using声明 Using 块的开头,并根据需要获取该块控制的系统资源 ,以前这么写:Dim frm As New Form1 : frm.ShowDialog() : frm.Dispose() ,现在可以这么写:Using frm As New Form1 : frm.ShowDialog() : End Using 。

34.接口重新实现:在子类中可以重新实现基类中已经实现的接口,冥冥中好像有些作用吧。2003不支持。

35.泛型:泛型 、泛型、泛型,要讲三天三夜。

36.泛型约束-接口约束、继承约束、引用类型约束、值类型约束、无参构造函数约束:泛型、泛型、泛型,要讲三天三夜。

37.foreach 比For Next慢:这个不清楚,可能For next是索引,foreach是索引加上其他一些东东,所以慢吧.

38.SecureString:表示应保密的文本。文本在使用时出于保密目的被加密,并在不再需要时从计算机内存中删除 .

39.强类型泛型抽象类型:Public Interface IDictionary(Of TKey, TValue) ,看看这个就明白俺的意识了。

40.StopWatch:测试时间的新方式。

41.DeflateStream/GZipStream:提供压缩和解压缩流的方法,这两个类的算法不同。俺用过ICSharpCode.SharpZipLib.dll 。

42.Array.Sort/Array.Resize/Array.Find/Array.FindLast/Array.FindIndex/Array.ConvertAll/Array.Foreach好又多泛型方法:MSDN

43.My.Application My.Computer My.Forms My.Resources My.Settings My.User My.WebServices:VB2005 MY命名空间提供对于一些东西的快速访问,讲一天一夜吧。

44. Delegate的协变和逆变(C#,VB.net):C#支持协变和逆变,但VB不支持,但VB是弱类型,所以也可以达到类似的效果。

45.BackGroundWorker:一个好用的多线程控件。

46.Nullable:可空类型。

...

以上错误之处,不吝指正,谢谢!