有以下主要新功能
运算符重载/部分类/Continue 关键字/Using 关键字/拆分存取访问/泛型支持
运算符重载 Dim ShortSpan, LongSpan, TotalSpan As TimeSpan ShortSpan = TimeSpan.FromMinutes(100) LongSpan = TimeSpan.FromDays(14) TotalSpan = ShortSpan + LongSpan Console.WriteLine(TotalSpan.TotalMinutes) 为什么可以直接TotalSpan = ShortSpan + LongSpan这样呢,原因是TimeSpan类对+号运算符进行了重载,如 Public Shared Operator+(objA As MyClass, objB as MyClass) As MyClass ' (Code goes here.) End Operator
部分类 所谓部分类,就是把类定义为类的一部分,一个类可以有多个部分类组成而形成一个完整的类 部分类的主要作用用于把类的定义分别存于不同的文件中,使用如下 比如在文件TestClass_1.vb中存放下面代码 Partial Public Class 存放 Public Sub TestMethodA() Console.WriteLine("Method A called.") End Sub End Class 在文件TestClass_2.vb中存放下面代码 Partial Public Class TestClass Public Sub TestMethodB() Console.WriteLine("Method B called.") End Sub End Class
而调用时和存放在一起没有什么区别 Dim Obj As New TestClass() Obj.TestMethodA() Obj.TestMethodB()
Continue 关键字 有3中使用方法 Continue For、Continue Do 和 Continue While 分别应用于 For ... Next, Do ... Loop, or While ... End While中 如下例子 For i = 1 to 1000 If i Mod 5 = 0 Then ' (Task A code.) Continue For End If ' (Task B code.) Next
Using 关键字 Using表达式用于控制资源释放 如下: Using NewFile As New _ System.IO.StreamWriter("c:\MyFile.txt") NewFile.WriteLine("This is line 1") NewFile.WriteLine("This is line 2") End Using ' The file is closed automatically. ' The NewFile object is no longer available here. 这样,当使用了using关键字时,VB2005会自动调用对象的Dispose()方法释放资源
拆分存取访问 在以前有以下三种访问方式 公用 (Public) 友元 (Friend) 私用 (Private) 但是,当碰到下面情况时会碰到一下问题,如只想给访问Status的权限,而不让非友元类设置Status的值 Public Property Status() As Integer Get Return _Status End Get Set(ByVal value As Integer) _Status = value End Set End Property 这时就比较难以处理了,然而在VB.2005中可以使用如下代码实现 Public Property Status() As Integer Get Return _Status End Get Friend Set(ByVal value As Integer) _Status = value End Set End Property
泛型支持 泛型支持在C++中已经得到广泛应用,现在VB.2005也开始支持泛型 和泛型对照的一个非常实用的类是System.Collections.ArrayList类,它是一个可以自动调整大小的集合, 它可以存放一般的.NET对象,为了支持这项功能,它把所有对象看出OBJECT对象, 这样,当你只想用它来存放某一个类别的对象时,你不能保证它不能存放其他不同的类别 然而在泛型中,可以通过OF关键字来强行确定类型,从而保证了容器存放组件的一致性,如下 Public Class GenericList(Of ItemType) Inherits CollectionBase Public Function Add(ByVal value As ItemType) _ As Integer Return List.Add(value) End Function Public Sub Remove(ByVal value As ItemType) List.Remove(value) End Sub Public ReadOnly Property Item( _ ByVal index As Integer) As ItemType Get ' The appropriate item is retrieved from ' the List object and explicitly cast to ' the appropriate type, and then returned. Return CType(List.Item(index), ItemType) End Get End Property End Class 调用 ' Create the GenericList instance, and ' choose a type (in this case, string) Dim List As New GenericList(Of String) ' Add two strings. List.Add("blue") List.Add("green") ' The next statement will fail because it has the ' wrong type. There is no automatic way to convert ' a Guid object to a string. In fact, this line ' won't ever run, because the compiler notices the ' problem and refuses to build the application. List.Add(Guid.NewGuid()) .NET2。0提供下面的泛型供使用,你可以在Systems.Collections.Generic 命名空间中找到这些泛型 List – 和 GenericList 例子类似的基本集合 Dictionary –用于索引名称=值的集合 LinkedList –链表 Queue – 先进先出集合 Stack – 后进先出集合 ReadOnlyCollection – 有固定项目集的集合,其中項目一旦建立就无法更改 SortedDictionary – 永远保持排序的名称-值集合
|