为什么在C#中声明为隐式类型的数字默认为整数?
示例1为什么在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
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
。谢谢您的回答,请您在向下投票时添加评论,这有助于我提高。谢谢