我尽可能使用 var,因为不必显式定义变量更容易。但是当在if或switch语句中定义变量时,我必须明确定义它。string message;//var message; <--- gives errorif (error){ message = "there was an error";}else{ message = "no error";}Console.WriteLine(message);即使变量是在 if 或 switch 构造中定义的,有没有办法使用var?
3 回答
![?](http://img1.sycdn.imooc.com/545850a00001fdd002200220-100-100.jpg)
Helenr
TA贡献1780条经验 获得超4个赞
不。不过,在这种情况下,您可以使用条件:
var message = error ? "there was an error" : "no error";
但除此之外:没有。您需要指定类型,或使用初始显式值。我建议不要使用后者,因为它删除了明确的分配检查。
![?](http://img1.sycdn.imooc.com/54586870000183e302200220-100-100.jpg)
慕妹3242003
TA贡献1824条经验 获得超6个赞
在 Python 中,你可以做到这一点:
if error:
message = "there was an error";
else:
message = "no error";
print(message);
甚至:
message = "there was an error" if error else "no error"
这是可能的,因为 Python 不要求您定义变量:第一次为变量赋值时,它被创建,下一次被修改。
但是,这不是 C# 的情况;正如您自己所确认的那样,有各种警告不允许您像在 Python 中一样进行编码。首先,您需要定义要使用的每个变量(及其类型,但请继续阅读),其次,还有作用域。在 C# 中,在if分支内创建的变量将不存在于该分支的末尾。
好吧,然后是var。这是赋值运算符(“=”)右侧值类型的特殊快捷方式。这并不意味着“我稍后会告诉你变量的类型”。这意味着“变量的类型与我分配给它的表达式相同。”。换句话说,您只能var在定义变量的同时为变量赋值时使用。
希望这可以帮助。
- 3 回答
- 0 关注
- 257 浏览
添加回答
举报
0/150
提交
取消