2008-12-13 28 views
5

假設我正在用C#編寫一個庫,並且我不知道誰將會使用它。是否有與.NET不兼容的語言不支持無符號類型?

庫的公共接口有一些無符號類型 - uint,ushort。顯然這些類型不符合CLS,理論上講,可能有語言無法使用它們。

這樣的現實語言嗎?

+0

看到這個問題。可能是重複的:http://stackoverflow.com/questions/6325/why-are-unsigned-ints-not-cls-compliant – 2008-12-13 08:47:35

回答

5

我相信在VB.NET的原始版本中,無符號類型是可用的,但是對它們內置的語言沒有支持。當然,這在更高版本中已經得到解決。

此外,我懷疑現在已經不存在的J#不支持無符號類型(因爲Java沒有)。

5

.NET兼容性和CLS合規性是兩回事。任何可以用.NET框架以某種方式工作的東西都可以說是與它兼容的。 CLS合規性更嚴格。它爲語言實現者和庫設計師提供了一套遵循的規則,以創建一個相互兼容的語言和庫的生態系統。

CLS之類的東西的全部意義在於讓您避免必須研究語言的每個示例並找出如何支持它們。如果你想這樣做,你可以,但另一種選擇是遵守CLS,因此知道你將與其他符合CLS的任何其他(從過去的現在或未來)兼容。

1

如果今天沒有一個,可能會有一個明天。