我想知道为什么c#中不允许使用这种语法?
var email = (User user = User.Current) != null ? user.Email : "default@mail.com";
如果允许:
User user;
var email = (user = User.Current) != null ? user.Email : "default@mail.com";
为什么必须已经定义变量,并且不能在语句中定义?
这有助于缩短线条,例如:
var email = User.Current.Very.Complex.Path != null ? User.Current.Very.Complex.Path.Email : "default@mail.com";
可能是
var email = (var user = User.Current.Very.Complex.Path) != null ? user.Email : "default@mail.com";
答案 0 :(得分:3)
根据C#规范,不允许您尝试执行的操作。这基本上是因为变量声明/初始化是一个语句,而不是一个表达式(有关更多详细信息,请参阅Why can't we define a variable inside an if statement?;请将Pierre-Luc Pineault归功于链接)。
这是另一种方法,我认为它具有高可读性和简洁性:
var user = User.Current.Very.Complex.Path;
var email = user != null ? user.Email : "default@mail.com";