用于很好地处理null值的语法
本文关键字:语法 null 处理 很好 用于 | 更新日期: 2023-09-27 18:28:28
当返回一个对象时,该对象可能为null,但我通常不能使用(它的正确名称是什么?!)非常惊讶的运算符:像这样。
return hazaa ?? new Hazaa();
当我返回对象的一个属性(如果它存在的话)和一些默认值时,问题就出现了。这并不是说要对父对象进行null检查。今天我真的很喜欢。
return hazaa != null
? hazaa.Property
: String.Empty;
我认为这是一个不太理想的语法,我希望它更紧凑(但仍然很容易理解,因为属性实现得很好)
return (hazaa ?? new Hazaa()).Property;
然而,我不喜欢括号,我正在寻找一种省略它们的语法,仍然紧凑。C#中有这样的东西吗?我在找这样的东西。
return hazaa ?.Property :String.Empty;
然后,转念一想,像这样的事情。
return hazaa ?.Property :.BackUpProperty;
我可以创建自己的属性层来提供这样的行为,但这只是隐藏了问题。:)
A也许monad是一个可能的替代方案。
根据实现情况,它可能看起来像这样:
May.Be(hazaa, x => x.Property, string.Empty);
或
May.Be(hazaa).Select(x => x.Property, string.Empty);
如果你对这个主题感兴趣,你应该读一些monad。特别是在Maybe
monad上。这应该让你开始:http://devtalk.net/csharp/chained-null-checks-and-the-maybe-monad/
遗憾的是,C#中没有简化空检查的内置语法。