65.9K
CodeProject 正在变化。 阅读更多。
Home

在 Visual Basic 2008 中编写符合 CLS 标准的结构

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.78/5 (3投票s)

2008年3月9日

CPOL

1分钟阅读

viewsIcon

30076

使用 Visual Basic 2008 编写符合 Microsoft CLS 规范的结构体的技术。

引言

大多数开发人员已经知道什么是通用语言规范CLS):这是一套规则,每个开发人员都应该遵守,以确保他们的托管程序集即使被使用不同编程语言编写的应用程序引用时也能正常工作。

在本文中,我们将重点介绍在 Visual Basic 2008 中编写符合 CLS 规范的结构体。作为扩展,这段代码也可以在 Visual Basic 2005 和 .NET 2.0 中工作。

使用代码

当您使用 Visual Basic 实现自己的对象类型时(通常,编写 Structure),您必须重写一些由 Structure 继承的成员。如果您正在编写符合 CLS 规范的程序集,则必须这样做。

特别是,符合 CLS 规范的结构体必须重写相等和不等运算符,以及 EqualsGetHashCode 方法。

后一种操作也可以通过实现 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 分析工具对其进行分析。

© . All rights reserved.