回答:
すべての言語にunsigned intの概念があるわけではありません。たとえば、VB 6にはunsigned intの概念がなかったため、VB7 / 7.1の設計者も実装しないように決定しました(現在はVB8で実装されています)。
引用するには:
http://msdn.microsoft.com/en-us/library/12a7a7h3.aspx
CLSは、開発者が一般的に必要とする言語構造を含めるのに十分な大きさでありながら、ほとんどの言語がそれをサポートできるように十分に小さく設計されています。さらに、コードの型の安全性を迅速に検証することを不可能にする言語構造はCLSから除外されたため、すべてのCLS準拠言語は、そうすることを選択した場合に検証可能なコードを生成できます。
更新:私はこれについて数年前に疑問に思っていましたが、UIntがタイプセーフで検証できない理由はわかりませんが、CLSの担当者は、ベースラインの最小値がどこかについてカットオフポイントをどこかに持っている必要があると思いますサポートされる値タイプの数。また、より多くの言語がCLRに移植される長期について考えるとき、絶対に概念がない場合に、なぜ署名なし整数を実装してCLSに準拠するよう強制するのでしょうか。
問題の一部は、Cの符号なし整数型が数値ではなく抽象代数環のメンバーとして動作する必要があるという事実に関係していると思います[たとえば、符号なし16ビット整数変数がゼロに等しい場合、デクリメントが必要です65,535を生成し、それが65,535と等しい場合は、ゼロを生成するためにインクリメントする必要があります。]このような動作が非常に役立つ場合がありますが、数値型がこのような動作を示す場合、一部の言語の精神に反する可能性があります。符号なしの型を省略するという決定は、おそらくチェック済みと未チェックの両方の数値コンテキストをサポートするという決定よりも古いと推測します。個人的には、私は符号なしの数と代数環のために別々の整数型があったらいいのにと思います。単項マイナス演算子を符号なし32ビットの数値に適用すると、64ビットの符号付き結果が得られます(ゼロ以外の値を負にすると負の数になります)が、単項マイナスをリングタイプに適用すると、そのリング内に追加の逆が得られます。
いずれにせよ、符号なし整数がCLSに準拠していない理由は、言語が「CLS互換」と見なされるために言語が符号なし整数をサポートする必要がないと判断したためです。
Unsigned intを使用しても、実際にはそれほど多くは得られませんが、1種類以上のintを使用すると苦痛が生じるため、多くの言語ではintのみを使用しています。
CLS準拠は、クラスが多くの言語から利用できるようにすることを目的としています…
誰もあなたをCLS準拠にしないことを忘れないでください。
CLS準拠が制限するのはパブリックAPIのみであるため、メソッド内で、またはプライベートメソッドへのパラメーターとして、未署名の整数を引き続き使用できます。