Прежде чем спешить, чтобы подумать о ?? нуль коалесцирующий оператор:1 линейный, красочный и чистый способ присвоить значение, если null в C#?
string result = myParent.objProperty.strProperty ?? "default string value if strObjProperty is null";
Проблема в том, когда ли нулевые myParent или objProperty, то будет сгенерировано исключение, прежде чем даже достигнув оценки 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";
... который выдержит все, что угодно, «нуль» из скобки, чтобы вместо этого вернуть значение по умолчанию.
Спасибо за советы.
Посмотрите на C# 6, в '.' оператора?. – Luaan