C#发现使用var关键字

时间:2015-08-19 17:57:55

标签: c# visual-studio var

说我有以下代码:

var longValue = 2147483650; // Three more than the max int size
var intValue = 10;
var variableOfUnknownType = longValue - intValue;

我想知道variableOfUnkownType是什么类型。 (即variableOfUnknownType.GetType() == System.Int64variableOfUnkownType.GetType() == System.Int32?)

当然,我可以仔细阅读关于算术类型转换的C#文档,或者在我的代码中添加Console.WriteLine(variableOfUnknownType.GetType());语句来学习这个问题的答案。但是,根据C#'s var documentation

  

var关键字指示编译器从初始化语句右侧的表达式推断变量的类型。

这意味着MS Visual Studio应该能够在编译代码之前告诉我变量的类型。

我的问题是: 如何使用MS Visual Studio告诉我这个特定var变量的值?

2 个答案:

答案 0 :(得分:5)

只需将鼠标悬停在' var'关键字,它会告诉你推断出什么类型

答案 1 :(得分:1)

TL;博士;回答 将鼠标悬停在" var"你看到了类型(提示它是Int64 /长)

答案很长: 只需获取代码并将其替换为var表示的类型,即可获得以下代码:

uint longValue = 2147483650; // Three more than the max int size
int intValue = 10;
long variableOfUnknownType = longValue - intValue;

如你所见,这是三种不同的类型,但为什么呢? uint很有意义。没有必要占用64位,如果你可以用32位做同样的事情,因为这是一个正数,我们可以使用无符号整数。 int是自我解释的,但是起初有点混乱。

我们作为程序员知道int.MaxValue + 3 - 10再次适合int,但编译器不知道这一点。毕竟,他怎么知道intVariable是10?简单:他没有。因此,他推断出他知道可以处理价值的类型。由于我们在这里减去,它可能导致负值,所以他采用了符合值的签名类型,即Int64 / long

顺便说一句:这不在我脑海里。我必须再次检查c#中的整数运算以完全验证这一点。