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# 在使用var.

4

4 回答 4

10

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

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

于 2011-08-03T14:27:36.450 回答
5

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

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

于 2011-08-03T14:27:40.903 回答
3

var没有默认任何东西。相反,var它代替了初始化变量的表达式的实际类型。那么,问题是为什么要考虑 255int呢?答案是,如果没有类型提示(f、d、m、U、L 等),整数文字被认为是intuintlong或中的一个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
于 2011-08-03T14:33:52.000 回答
1

为什么不?Int32我相信最常使用。其他数字类型具有要添加到文字值的后缀。Int32被选为无后缀的。

如果您想var成为其他类型,请使用后缀,即

var number = 123f;

float有关数字文字的更多信息,请参见此处。

于 2011-08-03T14:29:16.847 回答