Q
C# - 爲空
5
A
回答
11
將以下代碼
if (customer.Person!=null)
Console.WriteLine(customer.Person.Name);
你不能,我怕 - 沒有什麼能像Groovy的空值安全的引用運算符:(
我想你可以爲Person創建一個「空對象」 - 也就是一個真實的實例,但是所有的屬性都是null。那麼你可以使用:
Console.WriteLine((customer.Person ?? Person.Null).Name ?? "Unknown");
......但那真是太可怕了。 (它也沒有檢查customer
被空。)
另一種選擇是寫在人的擴展方法:
public static string NameOrDefault(this Person person, string defaultName)
{
return person == null ? defaultName : person.Name ?? defaultName;
}
然後:
Console.WriteLine(customer.Person.NameOrDefault("Unknown");
5
您可以使用ternary operator:
Console.WriteLine(customer.Person != null ? customer.Person.Name : "unknown");
不是最好看的代碼,但仍然一個班輪。
編輯:不要忘記使用IsNullOrWhiteSpace,如果你的應用程序邏輯將空&空字符串相同。
相關問題
- 1. C#SignalR:HttpContext.Current.ApplicationInstance爲空
- 2. C - char *爲空?
- 3. C#XNA SpriteBatch爲空?
- 4. UWP INotifyPropertyChanged爲空(c#)
- 5. C#TreeView SelectedNode爲空?
- 6. C#爲什麼SelectedNode.Tag爲空?
- 7. C#mysettings運行爲空
- 8. c# - 查詢從不爲空?
- 9. C#asp.net Membership.Getuser()總是爲空
- 10. Objective C UITextField值爲空
- 11. C字符串變爲空
- 12. C#Propertygrid屬性可爲空
- 13. C#URI無效:URI爲空
- 14. c#查看IEnumerable爲空
- 15. C#枚舉 - 是否爲空?
- 16. C#DateTimeSqlNullValueException:數據爲空
- 17. C++ new * char不爲空
- 18. C#比較sql datetime爲空
- 19. C#連接變爲空
- 20. C#ShowDialog父窗體爲空
- 21. c#:PropertyChanged始終爲空
- 22. 物業成爲空C#WPF
- 23. c#linqtosql datagridview完全爲空
- 24. C#dataview datatable變爲空
- 25. 確定XmlNode在C#中是否爲空或爲空?
- 26. DataReader爲空或爲空
- 27. C++模板問題:轉換爲空
- 28. C#實例化對象爲空
- 29. Objective C變量設置爲空
- 30. 爲什麼我得到空從類C#
「Person.Null」是什麼意思? – Alexandre 2011-03-24 07:45:49
@Alex:這將是Person類中的一個靜態屬性,返回特殊的「null對象」Person引用,該引用的所有屬性都爲null。 – 2011-03-24 07:46:33
@Alex:這是一個靜態屬性,返回表示「無人」的Person實例。這是[空對象模式](http://en.wikipedia.org/wiki/Null_Object_pattern)。 – Richard 2011-03-24 07:47:37