在我的Visual Studio 2017中,像这样的“错误列表”窗口中有一条消息。
IDE0029空检查可以简化
我用Google搜索它,发现了此链接Null-conditional operators ?. and ?[],但我听不懂。
我的代码很简单:
string varIP = Request.UserHostAddress != null ? Request.UserHostAddress : "IP null";
如何再次简化它?
答案 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个点-这意味着可以进行重构:
边缘还有一个黄色的灯泡。点击灯泡:
您可以看到Visual Studio建议的更改。点击“使用合并表达式”进行更改:
您还可以使用快捷键ctrl+.
来减少点击的次数。将光标放在该单击上的某个位置(任何位置),按ctrl+.
,将出现与单击灯泡相同的菜单。按Enter
接受更改。
这意味着您可以快速修复代码:
Ctrl+.
然后Enter
在许多地方都可以进行重构,如灯泡所示。有时您必须将光标放在特定的位置,这使得很难发现所提供的功能。例如,可以使用重构来自动实现构造函数或生成字段/属性,自动为属性分配参数并添加空检查,将foreach循环转换为for循环和linq,反之亦然,等等。
答案 3 :(得分:0)
string varIP = Request.UserHostAddress ?? "IP null";
如果Request.UserHostAddress
不为null,则分配值,否则将??
分配为varIP
之后的部分。