Prima di correre a pensare al ?? nullo operatore coalescenza:1 modo lineare, bello e pulito per assegnare un valore se null in C#?
string result = myParent.objProperty.strProperty ?? "default string value if strObjProperty is null";
Il problema è quando se mioGenitore o objProperty sono nulli, allora sarà un'eccezione prima ancora di raggiungere la valutazione dei strProperty.
per evitare le seguenti verifiche nulli aggiuntivi:
if (myParent != null)
{
if (objProperty!= null)
{
string result = myParent.objProperty.strProperty ?? "default string value if strObjProperty is null";
}
}
io generalmente usare qualcosa di simile a questo:
string result = ((myParent ?? new ParentClass())
.objProperty ?? new ObjPropertyClass())
.strProperty ?? "default string value if strObjProperty is null";
Quindi, se l'oggetto è nullo allora ne crea uno nuovo solo per essere in grado di accedere alla proprietà.
Quale non è molto pulito.
Vorrei qualcosa come un '???' operatore:
string result = (myParent.objProperty.strProperty) ??? "default string value if strObjProperty is null";
... che sarebbe sopravvissuto qualunque "null" da dentro la parentesi per tornare invece il valore di default.
Grazie per i suggerimenti.
sguardo al C# 6, il .' operatore '?. – Luaan