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

art*_*ung 3 c# asp.net asp.net-mvc

在这个.NET代码中:

return Redirect("~/Home" ?? "JaneDoe");
Run Code Online (Sandbox Code Playgroud)

如果我正在阅读文档,那么" ??"运算符似乎与SQL中的IsNull类似:

IsNull("~/Home", "JaneDoe")
Run Code Online (Sandbox Code Playgroud)

"~Home"而且"JaneDoe"只是字符串,对吗?在return Redirect代码中没有条件,"JaneDoe"将被传递到"重定向",是吗?我不知道该如何制作这个片段,我只能假设它是一个占位符,可以在以后发布.

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

Jon*_*eet 7

是的,这只是糟糕的代码.这总是相当于

return Redirect("~/Home");
Run Code Online (Sandbox Code Playgroud)

老实说,我有点惊讶的是,编译器不够聪明,无法给出警告.如果它可以告诉在null-coalescing运算符的LHS上使用了一个常量非null表达式,那将是很好的.

  • 为了让编译器能够捕获它,编译器团队中的某个人必须首先考虑该场景.我永远不会指望任何人将*文字字符串*传递给?? 运营商. (7认同)
  • @artlung:看起来编写代码的人仍然在学习;) (2认同)
  • 我知道ReSharper插件会抓住这个,不知道关于vanilla VS check-as-you-go. (2认同)