??操作员有2个字符串?

时间:2011-01-05 16:17:28

标签: c# asp.net asp.net-mvc

在这个.NET代码中:

return Redirect("~/Home" ?? "JaneDoe");

如果我正确阅读文档,“??”运算符似乎与SQL中的IsNull类似:

IsNull("~/Home", "JaneDoe")

"~Home""JaneDoe"只是字符串,对吗? return Redirect代码中没有任何条件,其中“JaneDoe”将被传递到“重定向”,是吗?我不知道该如何制作这个片段,我只能假设它是一个占位符,以便稍后出现。

此代码来自开发中的.NET-MVC项目,是.cs文件的一部分,是LoginController。

5 个答案:

答案 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,则选择右侧。