Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# var vs int:var未定义,int正常_C# - Fatal编程技术网

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
,以便我知道它是否失败。