Eventuali duplicati:
Shortcut for “null if object is null, or object.member if object is not null”Operatore di navigazione sicura in C#?
Alcune lingue hanno un operatore di navigazione sicura che permette di realizzare non ti preoccupi di eccezioni riferimento null.
Esempio della lingua Groovy:
String lname = person.Name.ToLowerCase(); //throws exception if Name is null
String lname = person.Name?.ToLowerCase();//lname will be null if Name was null
Come posso realizzare qualcosa di simile a questo in C#? La mia soluzione finora è un metodo di estensione come questo:
public static T o<T>(this T obj) where T : new()
{
return obj != null ? obj : new T();
}
//used like: String lname = person.o().Name; //returns null if person was null
Tuttavia, questo funziona solo in alcuni casi.
http://visualstudio.uservoice.com/forums/121579-visual-studio/suggerimenti/3990187-add-operator-to-c-? Tracking_code = 594c10a522f8e9bc987ee4a5e2c0b38d – Hawxby
In questo momento di scrittura, tale funzione è effettivamente prevista per C# 6: vedere [.NET Compiler Platform ("Roslyn"): Stato della funzione lingua: Operatore di propagazione nullo '? .'] (http://roslyn.codeplex.com/discussions/540883) – stakx