c# - 空合并运算符覆盖

标签 c#

我知道做这样的事情是没有意义的:

xstring.ToLower()??"xx"

因为我调用了 ToLower() 在检查 null 之前被调用。 有没有办法解决这个问题,同时保持语法简洁明了?

我可以覆盖字符串的 ?? 运算符,以便它仅在 xstring 不是 null 时调用 ToLower() ?

最佳答案

您要找的是 Monadic Null Checking .它目前在 C# 5 中不可用,但显然它将在 C# 6.0 中可用。

来自 this post :

7. Monadic 空检查

无需在访问属性或方法之前检查空值。在 Groovy 中称为安全导航运算符

之前

if (points != null) {
    var next = points.FirstOrDefault();
    if (next != null && next.X != null) return next.X;
}   
return -1;

之后

var bestValue = points?.FirstOrDefault()?.X ?? -1;

与此同时,只需使用

(xstring ?? "xx").ToLower();

正如其他答案所建议的那样。

关于c# - 空合并运算符覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21051551/

相关文章:

c# - 如何在 Visual Studio 2010 中设置 aspnet_compiler 的标志/开关?

c# - 在多个领域都有所不同

c# - 使用 Interop.Word,有没有办法进行替换(使用 Find.Execute)并保持原始文本的对齐方式?

c# - C#中的空参数检查

c# - 如果属性中有验证属性,为什么 Validator.TryValidateObject 不验证类?

c# - app.config 的困境 - 为什么我不能嵌入应用程序配置?

c# - 如何从 mySql 填充 DataGrid

c# - LINQ 表达式中不区分大小写的字符串比较

c# - Azure函数: how to efficiently send batch of messages to Service Bus using bindings?

c# - 下载功能在 asp.net 的更新面板中不起作用