var vs int:var未定义,int可以

时间:2015-07-06 18:48:27

标签: c#

知道为什么使用var velocity = ...给我一个未声明的错误?当我使用int velocity = ...时,它没有错误。

// Error: Cannot use local variable 'velocity' before it is declared
var velocity = int.TryParse(txtVelocity.Text, out velocity) ? velocity : -1;

// Valid
int velocity = int.TryParse(txtVelocity.Text, out velocity) ? velocity : -1;

2 个答案:

答案 0 :(得分:6)

因为规格如此说明

您不能在初始化表达式中使用使用var声明的变量。

请参阅:Implicitly Typed Local Variables (C# Programming Guide)

  

使用var声明的变量不能在初始化中使用   表达。换句话说,这个表达是合法的:   int i = (i = 20);但此表达式会产生编译时错误:   var i = (i = 20);

答案 1 :(得分:3)

事实是 var 关键字意味着“我想要一个我仍然不知道它的类型的变量,请编译先生为我找到它的类型”。 现在你想使用未确定的速度var作为out参数。 这是不可能的,因为你正在为编译器做一个循环。