C# var vs int:var未定义,int正常
你知道为什么使用C# var vs int:var未定义,int正常,c#,C#,你知道为什么使用var-velocity=…会给我一个未声明的错误吗?当我使用intvelocity=…时,它没有给出任何错误 // 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(tx
var-velocity=…
会给我一个未声明的错误吗?当我使用intvelocity=…
时,它没有给出任何错误
// 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;
因为说明书上这么说 不能在初始化表达式中使用使用
var
声明的变量
见:
使用var声明的变量不能用于初始化
表情。换言之,此表达是合法的:
inti=(i=20)代码>但此表达式产生编译时错误:
var i=(i=20)代码>
事实上,var关键字意味着“我想要一个变量,但我仍然不知道它的类型,请为我找到它的类型”。
现在你想用这个未确定的速度变量作为输出参数。
这是不可能的,因为您正在为编译器创建一个循环。问题仅仅是因为您使用速度作为输出参数,而在?语法,这就是编译错误的来源。不要这样使用三元运算符。使用if
语句。这导致了velocity=velocity
,而保存的额外行并不能弥补逻辑的不足。我仍然不明白为什么人们会以这种方式夸大var的使用。如果你知道类型,就像这里的情况一样,就用它。它记录了意图。@PhilipStuyck:我只是好奇为什么它是这样工作的,我使用的是int
版本。@Jonesy:但这里面缺少什么逻辑?如果TryParse
成功,则返回结果。否则将返回-1
,以便我知道它是否失败。