在这个.NET代码中:
return Redirect("~/Home" ?? "JaneDoe");
如果我正确阅读文档,“??
”运算符似乎与SQL中的IsNull类似:
IsNull("~/Home", "JaneDoe")
"~Home"
和"JaneDoe"
只是字符串,对吗? return Redirect
代码中没有任何条件,其中“JaneDoe”将被传递到“重定向”,是吗?我不知道该如何制作这个片段,我只能假设它是一个占位符,以便稍后出现。
此代码来自开发中的.NET-MVC项目,是.cs
文件的一部分,是LoginController。
答案 0 :(得分:7)
是的,这只是糟糕的代码。这将总是等同于
return Redirect("~/Home");
说实话,我有点惊讶编译器不够聪明,无法发出警告。如果它可以告诉在null-coalescing运算符的LHS上使用了一个常量非null表达式,那就太好了。
答案 1 :(得分:3)
??运算符称为null-coalescing运算符,用于为可空值类型和引用类型定义默认值。如果它不为null,则返回左侧操作数;否则返回正确的操作数。
在你的情况下,它永远不会返回JaneDoe
答案 2 :(得分:2)
是的,你正确地阅读它。这将永远返回“〜/ Home”,可能是计划在某个时候将其更改为变量。
答案 3 :(得分:1)
正确,表达式永远不会返回“JaneDoe”。
答案 4 :(得分:1)
这总是使用"~/Home"
字符串。 null-coalescing运算符(??)如果它是非null则选择左侧,如果它是null,则选择右侧。