在你急于考虑之前??空合并运算符:
string result = myParent.objProperty.strProperty ?? "default string value if strObjProperty is null";
这里的问题是当 myParent 或 objProperty 是否为 null 时,它甚至会在达到 strProperty 的评估之前抛出异常。
为了避免以下额外的空值检查:
if (myParent != null)
{
if (objProperty!= null)
{
string result = myParent.objProperty.strProperty ?? "default string value if strObjProperty is null";
}
}
我通常使用这样的东西:
string result = ((myParent ?? new ParentClass())
.objProperty ?? new ObjPropertyClass())
.strProperty ?? "default string value if strObjProperty is null";
因此,如果对象为空,那么它会创建一个新对象,以便能够访问该属性。
这不是很干净。
我想要类似'???'的东西 操作员:
string result = (myParent.objProperty.strProperty) ??? "default string value if strObjProperty is null";
...它将保留括号内的任何“null”以返回默认值。
感谢您的提示。