Visual Baisc.NET 2005中的泛型
2007-03-02 10:01
330 查看
昨天看到一段VB.NET代码,其中的IComparer(Of Match)一处看不懂,想把它转为C#,只看出实现IComparer接口。后查资料这是VB.NET中泛型。
1 Public Class AlphaComparer
2 Implements IComparer(Of Match)
3
4 Public Function Compare(ByVal x As System.Text.RegularExpressions.Match, ByVal y As System.Text.RegularExpressions.Match) As Integer Implements System.Collections.Generic.IComparer(Of System.Text.RegularExpressions.Match).Compare
5 Return String.Compare(x.Value, y.Value, True)
6 End Function
7 End Class
根据泛型在C#中的语法,转换为:
1 public class AlphaComparer : IComparer<Match>
2 {
3 public int Compare(System.Text.RegularExpressions.Match x, System.Text.RegularExpressions.Match y)
4 {
5 return string.Compare(x.Value, y.Value, true);
6 }
7 }
VB.NET 2005中 建立泛型类
使用泛型的时候,你应该选择有广泛用途的类,这样的话建立泛型类所需要的时间最终会在减少开发时间方面给予你回报。例如,集合就是一种处理多个数据类型的类,并且一般你会在多个应用程序中使用同一个集合的多种不同的形式。你不需要每次根据草稿建立集合,而是使用泛型建立一个泛型类原型(prototype)。首先,你需要给代码添加如下所示的Imports语句:
添加Imports语句之后,你就可以建立泛型类了。基本的类看起来很常见。你可以使用属性、函数、子程序、字段或可以在类中使用的其它任何东西,如列表1所示:
列表1.定义一个泛型类类型
这个类的声明看起来很常见,但是请留意“(Of ItemType)”条目。这个条目就是泛型类与标准类的差别。你可以把它看作是一个占位符,在未来实例化这个类的时候,你需要提供类型。当.NET框架组件发现这个条目的时候,它用使用这个类的代码所提供的类型来替换这个条目。当然,你没有必要在类中使用ItemType(数据项类型)——你可以把泛型类随便叫什么名字,就像为变量命名一样。
由于这是一个集合类,代码首先执行的事务是建立一个保持集合的全局变量。但是,由于你希望把这个集合与泛型数据类型关联起来,因此再次使用专用的“(Of ItemType)”条目告诉.NET框架组件来建立一个特定的集合。这就是强数据类型定义开始起作用的地方。尽管你并不知道集合将使用的数据类型,但是.NET框架组件将会,而且能够为你建立这种数据类型的集合。
在所有的类中你都必须包含一个构造函数或者New()子程序。在例子中构造函数实例化集合。同样,一定要使用“(Of ItemType)”代码来确保代码正确地对待泛型数据。
你可以像平时一样使用这个集合。例如,Count属性返回集合中数据项的数量。实际上,这段代码与标准类中使用的代码看起来没有差别。
有时你必须处理特定的数据项类型。Item属性演示了这种原理。请注意,这个属性返回一个ItemType类型的值——你现在并不知道数据的类型,但是未来.NET框架组件会指定类型。实际上,当我建立这个类的时候,IDE自动地为我建立了正确的Set()方法。请注意,这个方法也依赖于ItemType。但是,使用泛型并没有阻止你建立标准的属性条目。例如,property属性是这个类的默认值,因为我们使用Default关键字定义了它。
这个类的末尾是两个子程序。第一个根据ItemType给集合添加新值;第二个使用数据项编号从集合中删除一个值。开发者不可能把错误的数据类型添加到集合中,因为.NET框架组件指定并监视着数据类型。因此,你不用担心某个人提供了类型错误的数据,尽管这个类接受了通常的输入。我们把这种功能与使用Object进行对比,使用Object时开发者可能提供任何类型的输入信息,而你必须执行检测以确保它是正确的类型。
....关于VB.NET2005中的泛型请参见
<<Visual Baisc.NET 2005中使用泛型>>
http://dev.yesky.com/SoftChannel/72342380468240384/20041116/1876323.shtml
1 Public Class AlphaComparer
2 Implements IComparer(Of Match)
3
4 Public Function Compare(ByVal x As System.Text.RegularExpressions.Match, ByVal y As System.Text.RegularExpressions.Match) As Integer Implements System.Collections.Generic.IComparer(Of System.Text.RegularExpressions.Match).Compare
5 Return String.Compare(x.Value, y.Value, True)
6 End Function
7 End Class
根据泛型在C#中的语法,转换为:
1 public class AlphaComparer : IComparer<Match>
2 {
3 public int Compare(System.Text.RegularExpressions.Match x, System.Text.RegularExpressions.Match y)
4 {
5 return string.Compare(x.Value, y.Value, true);
6 }
7 }
VB.NET 2005中 建立泛型类
使用泛型的时候,你应该选择有广泛用途的类,这样的话建立泛型类所需要的时间最终会在减少开发时间方面给予你回报。例如,集合就是一种处理多个数据类型的类,并且一般你会在多个应用程序中使用同一个集合的多种不同的形式。你不需要每次根据草稿建立集合,而是使用泛型建立一个泛型类原型(prototype)。首先,你需要给代码添加如下所示的Imports语句:
Imports System.Collections.Generic |
列表1.定义一个泛型类类型
Public Class MyGenericCollection(Of ItemType) ' 定义一个通用的集合 Private Items As Collection(Of ItemType) ' 建立构造函数 Public Sub New() Items = New Collection(Of ItemType) End Sub ' 返回集合中数据项的数量 Public ReadOnly Property Count() As Integer Get Return Items.Count End Get End Property ' 得到或设置一个特定的数据项 Default Public Property Item(ByVal Index As Integer) As ItemType Get Return Items(Index) End Get Set(ByVal value As ItemType) Items(Index) = value End Set End Property ' 给集合添加新的数据项 Public Sub Add(ByVal Value As ItemType) Items.Add(Value) End Sub ' 从集合中删除数据项 Public Sub RemoveAt(ByVal Item As Int32) Items.RemoveAt(Item) End Sub End Class |
由于这是一个集合类,代码首先执行的事务是建立一个保持集合的全局变量。但是,由于你希望把这个集合与泛型数据类型关联起来,因此再次使用专用的“(Of ItemType)”条目告诉.NET框架组件来建立一个特定的集合。这就是强数据类型定义开始起作用的地方。尽管你并不知道集合将使用的数据类型,但是.NET框架组件将会,而且能够为你建立这种数据类型的集合。
在所有的类中你都必须包含一个构造函数或者New()子程序。在例子中构造函数实例化集合。同样,一定要使用“(Of ItemType)”代码来确保代码正确地对待泛型数据。
你可以像平时一样使用这个集合。例如,Count属性返回集合中数据项的数量。实际上,这段代码与标准类中使用的代码看起来没有差别。
有时你必须处理特定的数据项类型。Item属性演示了这种原理。请注意,这个属性返回一个ItemType类型的值——你现在并不知道数据的类型,但是未来.NET框架组件会指定类型。实际上,当我建立这个类的时候,IDE自动地为我建立了正确的Set()方法。请注意,这个方法也依赖于ItemType。但是,使用泛型并没有阻止你建立标准的属性条目。例如,property属性是这个类的默认值,因为我们使用Default关键字定义了它。
这个类的末尾是两个子程序。第一个根据ItemType给集合添加新值;第二个使用数据项编号从集合中删除一个值。开发者不可能把错误的数据类型添加到集合中,因为.NET框架组件指定并监视着数据类型。因此,你不用担心某个人提供了类型错误的数据,尽管这个类接受了通常的输入。我们把这种功能与使用Object进行对比,使用Object时开发者可能提供任何类型的输入信息,而你必须执行检测以确保它是正确的类型。
....关于VB.NET2005中的泛型请参见
<<Visual Baisc.NET 2005中使用泛型>>
http://dev.yesky.com/SoftChannel/72342380468240384/20041116/1876323.shtml
相关文章推荐
- 在Visual Baisc.NET 2005中使用泛型
- 在Visual Baisc.NET 2005中使用泛型
- visual studio net 2005关于用户列表增加停封与未停封帐号tag运用
- 将 Web 项目从 Visual Studio .Net 2002/2003 转换到 Visual Studio 2005 的分步指南[转]
- visual studio.net 2005 下载
- Some tips for ASP.NET Visual Studio 2003 project porting to Visual Studio 2005
- Visual Studio.NET 2005下载
- 如何动态添加 ActiveX 控件, 需要在 VisualC # .NET 或 VisualC # 2005 中运行时许可证
- Microsoft Visual SourceSafe 2005在VS.NET中的使用
- 对Visual Stuido .NET 2005 BEAT 2 的帮助文档的翻译(语言篇)
- How to transfer data to an Excel workbook by using Visual C# 2005 or Visual C# .NET
- 您会收到一个安装程序检测到另一个程序需要重新启动计算机"的错误消息时您尝试安装 Visual Studio.net 或 Visual Studio 2005
- visual studio.net 2005 更改pocket PC 模拟RAM大小
- vc 6.0, Visual Studio.net 2005 , VC++ 6.0的MSDN下载链接
- Visual Studio.Net 2005中用SqlDataSource处理数据库特殊数据类型
- Visual Studio.net 2005 新建项目对话框中项目模版消失的解决方案
- LumaQQ.NET For Visual Studio 2005 代码下载
- Visual Studio .NET 2003中使用简体Visual Studio 2005 MSDN Library
- 如何使用 Visual C# 2005 或 Visual C# .NET 向 Excel 工作簿传输数据
- WindowXP(Sp2)在aps.net(Visual studio.net 2005)中更新 Access 数据库时出错