为什么在C#中声明为隐式类型的数字默认为整数?

Vam*_*msi 4 c# var implicit-typing

例1

var test = Byte.MaxValue;
Console.WriteLine(test + " : " + test.GetType().Name);
Run Code Online (Sandbox Code Playgroud)

结果255:字节

例2

var test = 255;
Console.WriteLine(test + " : " + test.GetType().Name);
Run Code Online (Sandbox Code Playgroud)

结果255:Int32

例3

var test = 10;
Console.WriteLine(test + " : " + test.GetType().Name);
Run Code Online (Sandbox Code Playgroud)

结果10:Int32

例4

var test = 255;
test = Int64.MaxValue;  
Console.WriteLine(test + " : " + test.GetType().Name);
Run Code Online (Sandbox Code Playgroud)

结果:错误:无法将类型long隐式转换为int

我的问题是为什么C#在使用时默认类型为Int32 var.

Jus*_*ner 10

当你使用var时,C#不会默认为Int32.当您声明一个整数文字而不提供类型提示时,C#默认为Int32(只要文字适合Int32,否则它将转到Int64).由于文字输入为Int32,因此var会自动选择该类型:

在C#中,文字值从编译器接收一个类型.您可以通过在数字末尾附加一个字母来指定数字文字的输入方式.例如,要指定值4.56应被视为浮点数,请在数字后附加"f"或"F" - MSDN

  • 除非文字太大而不适合`Int32`. (2认同)

Joã*_*elo 5

它不是var默认值Int32,是您分配给它的整数文字.

您可以使用后缀L来表示您正在编写Int64数字文字.