我知道做以下事情是没有意义的:
xstring.ToLower()??"xx"
Run Code Online (Sandbox Code Playgroud)
因为我ToLower()在调用null之前调用了.有没有办法解决这个问题,保持语法清晰干净?
我可以覆盖??字符串的运算符,以便它只调用ToLower()时xstring不是null吗?
不,你不能超载该运营商.只是放在.ToLowercoalesce之外:
(xstring ?? "xx").ToLower();
Run Code Online (Sandbox Code Playgroud)
您正在寻找的是Monadic Null Checking.它目前在C#5中不可用,但显然它将在C#6.0中提供.
从这篇文章:
在访问属性或方法之前,不需要检查空值.在Groovy中称为安全导航操作符).
之前
if (points != null) {
var next = points.FirstOrDefault();
if (next != null && next.X != null) return next.X;
}
return -1;
Run Code Online (Sandbox Code Playgroud)
后
var bestValue = points?.FirstOrDefault()?.X ?? -1;
Run Code Online (Sandbox Code Playgroud)
在此期间,只需使用
(xstring ?? "xx").ToLower();
正如其他答案所示.
| 归档时间: |
|
| 查看次数: |
543 次 |
| 最近记录: |