假设我正在用C#编写一个库,我不知道谁会使用它.
库的公共接口有一些无符号类型 - uint,ushort.显然,这些类型不符合CLS,从理论上讲,可能存在无法使用它们的语言.
那些现实的语言是否存在?
我相信在VB.NET的原始版本中,无符号类型是可用的,但是没有支持它们内置到该语言中.当然,这已在后来的版本中得到解决.
另外,我怀疑现在已经不存在的J#不支持无符号类型(假设Java没有).
.NET兼容性和CLS合规性是两回事.可以以某种方式与.NET框架的任何工作,可以说是与之兼容.CLS合规性更严格.它提供了一套语言实现和库的设计者规律可循,以便创造相互兼容的语言和库组成的生态系统.
像CLS这样的事情的全部意义在于允许您避免研究语言的每个示例并找出如何支持它们.如果你想这样做,你可以,但另一种方法是遵守CLS,因此知道你将与符合CLS的任何其他东西(来自过去现在或将来)兼容.