Visual Basic 9 (2008)Visual Basic 8 (2005)Visual Studio 2008Visual Studio 2005.NET 2.0.NET 3.5中级开发Visual Studio.NETVisual Basic
在 Visual Basic 2008 中编写符合 CLS 标准的结构






2.78/5 (3投票s)
使用 Visual Basic 2008 编写符合 Microsoft CLS 规范的结构体的技术。
引言
大多数开发人员已经知道什么是通用语言规范(CLS):这是一套规则,每个开发人员都应该遵守,以确保他们的托管程序集即使被使用不同编程语言编写的应用程序引用时也能正常工作。
在本文中,我们将重点介绍在 Visual Basic 2008 中编写符合 CLS 规范的结构体。作为扩展,这段代码也可以在 Visual Basic 2005 和 .NET 2.0 中工作。
使用代码
当您使用 Visual Basic 实现自己的对象类型时(通常,编写 Structure
),您必须重写一些由 Structure
继承的成员。如果您正在编写符合 CLS 规范的程序集,则必须这样做。
特别是,符合 CLS 规范的结构体必须重写相等和不等运算符,以及 Equals
和 GetHashCode
方法。
后一种操作也可以通过实现 IEqualityComparer
接口来完成,该接口为两种方法提供定义。
以下代码显示了如何重写运算符和 Equals
方法的示例
Public Structure MyStructure
'If our assembly is CLS-Compliant, we have to override some members
Public Shared Operator =(ByVal obj1 As MyStructure, _
ByVal obj2 As MyStructure) As Boolean
Return obj1.Equals(obj2)
End Operator
Public Shared Operator <>(ByVal obj1 As MyStructure, _
ByVal obj2 As MyStructure) As Boolean
Return Not obj1.Equals(obj2)
End Operator
Public Overrides Function Equals(ByVal obj As Object) As Boolean
Return Object.Equals(Me, obj)
End Function
'Add other code here
............
End Structure
要比较两个对象,我们可以调用由 Object
类提供的共享方法 Equals
。
关注点
这只是一个示例,但我认为在编写符合 CLS 规范的类库时,关注这种情况非常重要。无论如何,请记住,如果您想确保您的程序集符合 CLS 规范,可以使用免费的 Microsoft FxCop 分析工具对其进行分析。