IDE0029空检查可以简化C#6.0 ASP.NET

时间:2019-05-17 10:31:19

标签: c# asp.net

在我的Visual Studio 2017中,像这样的“错误列表”窗口中有一条消息。

IDE0029空检查可以简化

我用Google搜索它,发现了此链接Null-conditional operators ?. and ?[],但我听不懂。

我的代码很简单:

string varIP = Request.UserHostAddress != null ? Request.UserHostAddress : "IP null";

如何再次简化它?

4 个答案:

答案 0 :(得分:3)

您可以将空条件运算符null-coalescing operator??)结合使用来简化代码:

string varIP = Request?.UserHostAddress ?? "IP null";

意思是
如果Request?.UserHostAddress不为null,则它将Request.UserHostAddress的值分配给varIP
否则"IP null"被分配给varIP

答案 1 :(得分:1)

string varIP = Request.UserHostAddress != null ? Request.UserHostAddress : "IP null";

可以用null-coalescing operator重写:

string varIP = Request.UserHostAddress ?? "IP null";

这将使用UserHostAddress的值,除非它为null,在这种情况下,将使用右边的值(“ IP null”)。

如果Request可能为空,则可以另外使用问题中提到的空条件运算符:

string varIP = Request?.UserHostAddress ?? "IP null";

在这种情况下,如果Request为null,则左侧将评估为null,而不必检查UserHostAddress(否则将抛出NullReferenceException)和该值将再次使用null-coalescing运算符右侧的内容。

答案 2 :(得分:1)

Visual Studio会自动为您更改此设置。

首先,转到有问题的行(您可以在“错误列表”中双击该消息以执行此操作)。您会看到Request下有3个点-这意味着可以进行重构:

Refactoring available

边缘还有一个黄色的灯泡。点击灯泡:

Suggested Refactoring

您可以看到Visual Studio建议的更改。点击“使用合并表达式”进行更改:

Refactored

您还可以使用快捷键ctrl+.来减少点击的次数。将光标放在该单击上的某个位置(任何位置),按ctrl+.,将出现与单击灯泡相同的菜单。按Enter接受更改。

这意味着您可以快速修复代码:

  1. 双击错误列表中的消息
  2. Ctrl+.然后Enter

在许多地方都可以进行重构,如灯泡所示。有时您必须将光标放在特定的位置,这使得很难发现所提供的功能。例如,可以使用重构来自动实现构造函数或生成字段/属性,自动为属性分配参数并添加空检查,将foreach循环转换为for循环和linq,反之亦然,等等。

答案 3 :(得分:0)

string varIP = Request.UserHostAddress ?? "IP null";

如果Request.UserHostAddress不为null,则分配值,否则将??分配为varIP之后的部分。