C#仕様2.4.4.2では、数値リテラルに10進数または接尾辞がない場合は、、、、の最小値、int
またはそれを含めることができると規定されているためです。自然にフィットするので選ばれます。uint
long
ulong
10
Int32
整数リテラルのタイプは、次のように決定されます。
- リテラルに接尾辞がない場合、その値を表すことができる最初のタイプ(int、uint、long、ulong)があります。
C#言語の設計者は、10
に適合できるとしてもInt16
、その変数タイプの使用は比較的まれであると判断しました。そのInt32
使用法は「現状維持」になります。
実際、メモリが機能する場合、とにかくC#にはリテラルはありません。 Int16
値を取得するには、明示的に宣言して値を割り当てる必要がありますInt16
。
興味深いことに、私はコンパイルされたILコードを見て、を宣言しshort s = 10
、int i = 10
実際にまったく同じILを生成しました...それで、ショートパンツがどのように管理されているのか疑問に思います。とにかく、CLIでは実際には32ビット値として管理されている可能性があります。これが当てはまるかどうかを知りたいです。