.NET 的旗舰语言包含不符合 CLS 的编程结构,这似乎很奇怪。这是为什么?
示例(来自 here):两个或多个公共(public)/ protected / protected 内部成员定义为仅区分大小写
public int intA = 0;
public int INTA = 2;
或
public int x = 0;
public void X()
{
}
最佳答案
即使是无符号整数也不合规(至少在公共(public) API 上如此),但它们对于进行位移位的人来说非常重要,尤其是在右移时(有符号和无符号具有不同的右移行为) .
它们的最终目的是让您可以在适当的时候自由地使用它们。区分大小写的问题我可以不那么虔诚了——尽管拥有一个字段和属性仅按大小写不同很方便,但我想我可以快乐地生活在被迫使用不同的名字的情况下!特别是现在我们已经自动实现了属性...
这类似于它允许您使用 unsafe
的方式 - 这里的区别在于一些无符号整数不会破坏整个运行时的稳定性,因此它们不需要那么强大的 molly -守卫。
您可以添加:
[assembly: CLSCompliant(true)]
如果你喜欢,编译器会在你出错时告诉你。
最后:大多数代码(按体积)不作为组件使用。它是为完成一项工作而编写的,可能会被内部的其他代码使用。主要是图书馆作者/供应商需要担心 CLS 合规性等问题。那是(从数字上看)少数。
关于c# - 为什么 C# 包含不符合 CLS 的编程结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5022303/