なぜArray.Length
int ではなくuint
. 長さの値が負になることは決してないため、これは私を(少しだけ)悩ませます。
これにより、自分のクラスの長さプロパティに int を使用することも余儀なくされました。これは、int 値を指定するときに、これを明示的にキャストする必要があるためです...
したがって、究極の質問は、unsigned int ( ) の用途はありますuint
か? マイクロソフトでさえ、それらを使用していないようです。
unsigned int は CLS に準拠していないため、このプロパティの使用は を実装する言語に制限されますUInt
。
ここを参照してください:
フレームワーク 1.1
フレームワーク 2.0
多くの理由:
Array.Length が符号なしで負の int (2 の補数) に追加された場合、Array.Length はもちろんある時点で負の数に追加されるため、下位レベルで物事を単純化することにも関係している可能性があると思います。 、厄介な結果になる可能性があります。
「究極の質問」に対する答えは誰も提供していないようです。
unsigned int の主な用途は、外部システム (P/Invoke など) とのインターフェイスを容易にし、.NET に移植されるさまざまな言語のニーズに対応することだと思います。
通常、符号なしの値が明示的に必要でない限り、整数値は符号付きです。それは彼らが使われる方法です。私はその選択に同意しないかもしれませんが、それはまさにその通りです。
当分の間、今日の一般的なメモリの制約により、配列または同様のデータ構造に UInt32 の長さが必要な場合は、他のデータ構造を検討する必要があります。
バイト配列の場合、Int32 は 2GB の値を提供します