1. ホーム
  2. c#

[解決済み] 符号なしint型はなぜCLSに準拠しないのですか?

2022-05-15 23:46:26

質問

符号なし整数はなぜCLSに準拠しないのですか?

型指定はパフォーマンスのためだけで、正しさのためではないのではと思い始めています。

どのように解決するのですか?

すべての言語が符号なし int の概念を持っているわけではありません。たとえば、VB 6 には符号なし int の概念がなかったため、VB7/7.1 の設計者は同様に実装しないことを決定したのだと思います (現在は VB8 で実装されています)。

引用すると

http://msdn.microsoft.com/en-us/library/12a7a7h3.aspx

CLS は、開発者が一般的に必要とする言語構造を含むのに十分な大きさに設計されています。 CLSは、開発者が一般的に必要とする言語構造を含むのに十分な大きさでありながら、ほとんどの言語がサポートできるほど小さく設計されています。 ほとんどの言語がサポートできるように設計されています。また、どのような言語 コードの型安全性を迅速に検証することを不可能にする言語構成はCLSから除外されました。 CLSに準拠した言語が検証可能なコードを作成できるように、コードの型安全性を迅速に検証できない言語構成はCLSから除外されています。 検証可能なコードを作成することができるように、CLS に準拠したすべての言語がそうすることを選択できるようにしました。

更新: 何年か前にこのことについて考えたことがあります。UInt が型安全性を検証できない理由はわかりませんが、CLS の担当者は、サポートされる値の型の最小数の基準について、どこかでカットオフポイントを持たなければならなかったのでしょう。また、より多くの言語が CLR に移植されるようになる長期的なことを考えると、まったく概念がないのであれば、CLS に準拠するために符号なし int の実装を強制する必要はないのではないでしょうか。