.NET 框架中的通用语言规范是什么?
CLS只不过是一组准则或规则。当这些规则或准则集遵循任何DotNet支持的编程语言时,则该代码保证被其他DotNet编程语言使用。
例如,如果您编写 C# 代码,并且确保遵循通用语言规范,则 C# 代码可以由任何其他支持DotNet的编程语言使用。
为了理解这个概念,下面将违反通用语言规范,然后再看看会发生什么情况。
了解 CLS 的示例
正如我们知道的,C# 是大小写敏感的,而 VB 不对大小写。这意味着在 C# 中,您可以多次声明具有大小写差异的相同成员名称,但在 VB 中是不可能的。
因此,让我们创建两个类库项目。一个使用 C#,另一个使用 VB。然后,我们将尝试使用 VB 类库项目中的 C# 类库项目。
创建 C# 类库项目
使用 C# 编程语言创建名称为 CsharpClassLibrary的类库项目。创建 C# 类库项目后,然后添加一个名为计算器的类,然后复制并粘贴以下代码。
如下面所看到的,我们创建了两个同名但大小写差异的方法。一个方法以大写字母 C 开头,而另一个方法以小 c 开头。
创建 VB 类库项目
在同一个 CsharpClassLibrary 解决方案中,让我们添加另一个类库项目,名称为 VBClassLibrary,但使用 VB 作为编程语言。
在这里,在此项目中,我们要使用 C# 类库项目,因此首先添加对 CsharpClassLibrary 项目的引用。然后创建一个名称为"TestClass"的类,并在其中复制粘贴以下代码。
在 VB 类库中,出现了以上错误。这是因为 VB 不对大小写敏感,并且它找到了两个同名的方法。这意味着我们违反了 C# 代码中的通用语言规范。
"计算"是模棱两可的,因为类中存在多种具有此名称的成员。
如何检查代码是否符合 CLS?
为了检查您的代码是否遵循通用语言规范,首先,您必须在文件中启用 CLS AssemblyInfo.cs。因此,转到 C# 类库项目并打开AssemblyInfo.cs"属性"文件夹中的该文件。
打开类AssemblyInfo.cs,然后按照以下 2 个步骤操作。
步骤1:将系统命名空间导入为
using System;
步骤2:在此文件底部添加以下 CLSCompliant 属性,并将其值设置为 true
[assembly: CLSCompliant(true)]
然后,再次回到上面的编写两个重名的计算方法当中, 即可查看到小写的方法,会提示警告: