在if/else语句中定义变量时有没有办法使用var?

Edw*_*uay 7 c#

每当我可以使用var,因为更容易不必明确定义变量.

但是当在ifswitch语句中定义变量时,我必须明确定义它.

string message;
//var message; <--- gives error
if (error)
{
    message = "there was an error";
}
else
{
    message = "no error";
}

Console.WriteLine(message);
Run Code Online (Sandbox Code Playgroud)

即使变量是在if或switch构造中定义的,有没有办法使用var

Mar*_*ell 8

不,你可以在这种情况下使用条件:

var message = error ? "there was an error" : "no error";
Run Code Online (Sandbox Code Playgroud)

但除此之外:没有.您需要指定类型,或使用初始显式值.我建议不要使用后者,因为它删除了明确的分配检查.

  • 但是,假设分支只有一个返回值的语句. (6认同)
  • @HimBromBeere是的,因此"在这种情况下"和"但除此之外" (5认同)

Evk*_*Evk 5

你不能,你可以通过查看文件来确认:

以下限制适用于隐式类型变量声明:

var只能在同一语句中声明和初始化局部变量时使用; 该变量不能初始化为null,也不能初始化为方法组或匿名函数.

因此,要使用var您必须始终根据上述规则在同一语句中初始化它.

将其初始化为某个default值与单位化变量的语义不同.例如:

string message;
if (error) {
    message = "there was an error";
}
else {
    // forgot to assign here
}
// Compiler error, use of potentially uninitialized variable
Console.WriteLine(message);
Run Code Online (Sandbox Code Playgroud)

var message = "";
if (error) {
    message = "there was an error";
}
else {
    // forgot to initialize
}
// all fine
Console.WriteLine(message);
Run Code Online (Sandbox Code Playgroud)

所以,只需使用string message;.