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

为什么在C#中声明为隐式类型的数字默认为整数?,c#,var,implicit-typing,C#,Var,Implicit Typing,示例1 var test = Byte.MaxValue; Console.WriteLine(test + " : " + test.GetType().Name); 结果255:字节 示例2 var test = 255; Console.WriteLine(test + " : " + test.GetType().Name); 结果255:Int32 var test = 255; Console.WriteLine(test + " : " + test.GetType().Nam

示例1

var test = Byte.MaxValue;
Console.WriteLine(test + " : " + test.GetType().Name);
结果255:字节

示例2

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

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

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

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

var test = 255;
test = Int64.MaxValue;  
Console.WriteLine(test + " : " + test.GetType().Name);
结果:错误:无法将类型long隐式转换为int

我的问题是,为什么C#在使用
var

C#时会将类型默认为Int32,而不是仅在使用var时才将类型默认为Int32。C#在声明整数文本时会默认为Int32,而不提供类型提示(只要文本适合Int32,否则将转到Int64)。由于文本类型为Int32,因此var会自动选择该类型:

在C#中,文字值从编译器接收类型。你可以 通过将字母附加到数字文本,指定应如何键入数字文本 数字的结尾。例如,指定值为4.56 应被视为浮点数,在数字-MSDN后添加“f”或“f”


默认为
Int32
的不是
var
,而是指定给它的整数文本


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

为什么不<我认为code>Int32是最常用的。其他数值类型的后缀要添加到文字值中<代码>Int32被选择为不带后缀的代码

如果希望
var
为其他类型,请使用后缀,即

var number = 123f;

将是浮动的。请参阅。

var
没有默认值。相反,
var
代替初始化变量的表达式的实际类型。那么,问题是为什么255被认为是
int
?答案是,如果没有类型提示(f、d、m、U、L等),整数文本将被视为
int
uint
long
、或
ulong
,具体取决于哪种类型是适合该数字的最小类型

一些例子:

var i = 255; // var is int
var ui = 4000000000; // var is uint
var l = 5000000000; // var is long
var ul = 9223372036854775808; // var is ulong

除非文字太大,无法放入
Int32
。谢谢您的回答,请您在向下投票时添加评论,这有助于我提高。谢谢