Otá*_*cio 172
如果要确保可以由任何其他.NET语言使用,请使用CLSCompliant属性标记类.这些是基本规则:
无符号类型不应该是类的公共接口的一部分.这意味着公共字段不应该有uint或ulong等无符号类型,公共方法不应该返回无符号类型,传递给公共函数的参数不应该有无符号类型.但是,无符号类型可以是私有成员的一部分.
指针等不安全类型不应与公共成员一起使用.但是,它们可以与私人成员一起使用.
类名和成员名不应仅根据具体情况而有所不同.例如,我们不能有两个名为MyMethod和MYMETHOD的方法.
只有属性和方法可能会重载,操作符不应该重载.
小智 38
其他答案都是正确的.让我澄清一些事情--CLS代表公共语言规范.它是.NET语言必须实现和理解的最小规则集和所需的语言功能.该集合是公共类型系统的子集,它定义了如何在.NET中定义类型.
符合CLS意味着您可以编写可以在CLR上编译和运行的任何语言使用的代码.但是不需要CLS合规性,在CLS合规难以或不可能的情况下为您提供灵活性.
如果您希望您的代码被其他开发人员使用,那么您的API(您的公共类和方法)应该符合CLS.您应该通过将CLSCompliantAttribute添加到程序集来声明这一点.如果您不是为他人写作,则不需要CLS合规,尽管FxCop(Framework Cop)会不同意我的看法.
当您的程序集标记有CLSCompliantAttribute时,编译器将(应该!)检查您的代码,以查看在编译时是否会违反任何CLS规则(其中一些提及ocdecio)并向您报告违规行为以进行修复.
适用于此处:要标记整个项目符合CLS,请将此行添加到AssemblyInfo.cs(可在"解决方案资源管理器"中的"属性"下找到)
[assembly:CLSCompliant(true)]
Run Code Online (Sandbox Code Playgroud)
或等效于VB.NET(AssemblyInfo.vb隐藏在My Project下)
<Assembly: CLSCompliant(True)>
Run Code Online (Sandbox Code Playgroud)
感谢您使您的代码符合CLS标准.
| 归档时间: |
|
| 查看次数: |
48454 次 |
| 最近记录: |