如何在C#中創建像int,bool等非空值類型?在C#中創建非空值類型#
31
A
回答
42
是的,這些被稱爲struct
。
結構是值類型,就像int
,bool
等。
他們有與之相關的一些規則/建議:(我認爲這是最重要的)
一個結構傳遞和價值分配,不使用ref或out關鍵字時,.. 。這意味着將所有放入結構中的內容都將在分配或傳遞給方法時被複制。這就是爲什麼你不應該製造大型結構。
你不能定義參數的構造函數在C#中的結構
結構是更好的爲不可變的,並且沒有屬性setter。你可以通過製作可變結構來解決真正的麻煩。
有關結構的Microsoft文檔中可以找到其他規則。
至於不可空參考類型 ...這是不可能。您必須手動檢查代碼中的空值。
10
可以定義struct:
結構類型是通常用於封裝相關變量的小基團,如一個矩形的座標或項的一個特性的值類型庫存。下面的例子顯示了一個簡單的結構聲明:
public struct Book { public decimal price; public string title; public string author; }
但是,你不能定義別名像int
爲System.Int32
和需要用全名MyNamespace.Book
(或Book
與using MyNamespace;
)到你的結構參考。
相關問題
- 1. 如何將空值賦給C#中的非空類型變量?
- 2. 如何在C#中使非值類型爲空?
- 3. 數字類型的C++非零默認值 - 重新創建?
- 4. 抽象類和非空值類型
- 5. 如何在C++/CLI中將非空類型轉換爲可空?
- 6. 在C++中創建簡單類型
- 7. 在C#中創建模型類?
- 8. 幫助C#泛型錯誤 - 「類型'T'必須是非空值類型」
- 9. C數據類型創建
- 10. 在Linq中加入LEFT時存在非空值類型問題
- 11. 在C#中使用泛型創建類似類型的實例
- 12. 正在創建一個接受(可爲空)值類型和引用類型的C#泛型方法嗎?
- 13. MySQL的數據類型,以空值「0」,和非空值「1」
- 14. C++傳遞值與非原始類型?
- 15. 如何在C#創建這三個類泛型類或類型
- 16. 非空類型'System.DateTime',ASP.NET MVC
- 17. 在CakePHP中創建非框架類
- 18. 在非活動類中創建振動?
- 19. 在非活動類中創建alertdialog
- 20. 如何在C#中創建未知/泛型類型的列表?
- 21. 是否有可能在C#中爲泛型創建「此類型」?
- 22. 從postgres中的不同類型的列中選擇非空值
- 23. 如何在django 1.7模型中創建鍵值數據類型
- 24. 輸出(在C#空類型)
- 25. 在tfs 2010中創建構建類型
- 26. 我們可以在objective-c中創建可爲空/非空的屬性嗎?
- 27. C#可爲空類型和值屬性
- 28. 創建泛型類對象時,我得到空值。爲什麼?
- 29. SQL Server自定義非空數據類型默認值爲空
- 30. 在R中創建空模型
在什麼情況下你會使用這樣的事情?我的意思是,你想完成什麼?使用C#中的類創建對象時,可以始終檢查null。你使用術語「類型」很奇怪。如果您在問題中添加了一些上下文,則可以更輕鬆地找出解決方案。 – stephenbayer 2011-06-15 23:12:11
如果賦值運算符是可重載的,AFAIK不可爲空的引用類型將是可能的。但是,這在C#中並非如此。另一個catch是'MyType類型;'在開始時爲空。 – 2011-06-15 23:27:00
@stephenbayer:空值是*不好*。運行類型的空檢查從根本上與運行類型檢查沒有區別。如果我給你一個字符串,並且你調用它的方法,你將不會知道它是否是空的,直到它在運行時崩潰。一些語言具有不可空的引用類型;如果你想表示一個空值,你可以使用不同的數據類型(相當於'在許多語言中找到的選項'),所以你在編譯時通過類型系統進行通信並強制進行空值檢查。請參閱http://stackoverflow.com/questions/641328/about-the-non-nullable-types-debate/1451909#1451909。 –
Juliet
2011-06-15 23:33:59