4

例1

var test = Byte.MaxValue;
Console.WriteLine(test + " : " + test.GetType().Name);

結果255:バイト

例2

var test = 255;
Console.WriteLine(test + " : " + test.GetType().Name);

結果255:Int32

例3

var test = 10;
Console.WriteLine(test + " : " + test.GetType().Name);

結果10:Int32

例4

var test = 255;
test = Int64.MaxValue;  
Console.WriteLine(test + " : " + test.GetType().Name);

結果:エラー:long型をintに暗黙的に変換できません

私の質問は、C#が。を使用するときにタイプをデフォルトでInt32に設定する理由ですvar

4

4 に答える 4

10

varを使用する場合、C#はデフォルトでInt32になりません。型ヒントを指定せずに整数リテラルを宣言すると、C#のデフォルトはInt32になります(リテラルがInt32に収まる限り、そうでない場合はInt64になります)。リテラルはInt32として入力されるため、varは自動的にその型を取得します。

C#では、リテラル値はコンパイラーから型を受け取ります。数値の末尾に文字を追加することにより、数値リテラルの入力方法を指定できます。たとえば、値4.56をfloatとして処理するように指定するには、数値の後に「f」または「F」を追加します-MSDN

于 2011-08-03T14:27:36.450 に答える
5

varデフォルトでInt32は、に割り当てる整数リテラルです。

接尾辞を使用して、数値リテラルLを書き込んでいることを示すことができます。Int64

于 2011-08-03T14:27:40.903 に答える
3

varデフォルトでは何もありません。むしろ、var変数を初期化する式の実際の型の代わりになります。問題は、なぜ 255 が考慮されるのintかということです。答えは、型のヒント (f、d、m、U、L など) がない場合、整数リテラルは、 、 、 、または のいずれかであると見なされintuint数値longulong適合する最小の型に応じて決定されます。

いくつかの例:

var i = 255; // var is int
var ui = 4000000000; // var is uint
var l = 5000000000; // var is long
var ul = 9223372036854775808; // var is ulong
于 2011-08-03T14:33:52.000 に答える
1

なぜだめですか?Int32私が信じる最も頻繁に使用されます。他の数値タイプには、リテラル値に追加される接尾辞があります。Int32接尾辞のないものとして選ばれました。

他のタイプになりたい場合varは、接尾辞を使用してください。

var number = 123f;

になりますfloat数値リテラルの詳細については、ここを参照してください。

于 2011-08-03T14:29:16.847 に答える