每当我可以使用var,因为更容易不必明确定义变量.
但是当在if或switch语句中定义变量时,我必须明确定义它.
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?
不,你可以在这种情况下使用条件:
var message = error ? "there was an error" : "no error";
Run Code Online (Sandbox Code Playgroud)
但除此之外:没有.您需要指定类型,或使用初始显式值.我建议不要使用后者,因为它删除了明确的分配检查.
你不能,你可以通过查看文件来确认:
以下限制适用于隐式类型变量声明:
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;.
| 归档时间: |
|
| 查看次数: |
417 次 |
| 最近记录: |