thể trùng lặp:
Shortcut for “null if object is null, or object.member if object is not null”Toán tử điều hướng an toàn trong C#?
Một số ngôn ngữ có một nhà điều hành chuyển hướng an toàn cho phép bạn không phải lo lắng về trường hợp ngoại lệ tham khảo null.
Ví dụ về ngôn ngữ 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
Làm thế nào tôi có thể thực hiện một cái gì đó tương tự như sau trong C#? Giải pháp của tôi cho đến nay là một phương pháp mở rộng như sau:
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
Tuy nhiên, điều này chỉ hoạt động trong một số trường hợp.
http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestion/3990187-add-operator-to-c-? Tracking_code = 594c10a522f8e9bc987ee4a5e2c0b38d – Hawxby
Tại thời điểm viết bài này, tính năng này thực sự được lên kế hoạch cho C# 6: xem [.NET Compiler Platform ("Roslyn")): Trạng thái tính năng ngôn ngữ: Toán tử lan truyền Null '? .'] (http://roslyn.codeplex.com/discussions/540883) – stakx