检查表达式中的空值
本文关键字:空值 表达式 检查表 检查 | 更新日期: 2023-09-27 17:55:34
我有一个看起来像这样的Expression
:
obj => obj.Child.Name
其中Name
是一个字符串。我想做的是获取Name
的值。我可以通过编译方法并调用它来获得它,但是如果null
Child
,则会抛出NullReferenceException
。在这种情况下,有没有办法检查Child
是否为空?
对于当前的 C# 版本 5.0(或更低版本),您必须显式检查每个属性,例如:
if(obj != null && obj.Child != null)
{
//get Name property
}
在 C# 6.0 中,您将能够使用 Null 条件/传播运算符进行检查。
Console.WriteLine(obj?.Child?.Name);
obj => obj.Child == null ? null : obj.Child.Name
或使用 C# 6
obj => obj.Child?.Name
obj => obj.Child == null ? "" : obj.Child.Name;
您可以先过滤它们(使用 Where),如下所示:
var results = source.Where(obj => obj.Child != null).Select(obj => obj.Child.Name);
这样,您将防止这些空引用错误。