【more effective C#】改善 C# 程式碼的 50 個有效方法 - 注意值型別與引用型別之間的區別
阿新 • • 發佈:2020-10-25
-
對於 C# 來說, 必須在建立的時候決定該型別的所有例項應該表現出什麼樣的行為。
-
對於具體應為什麼型別, 沒有具體的答案, 而是需要根據該型別的用法來判斷。
-
值型別不是多型的,因此更適合存放應用程式的資料。
-
而引用型別可以多型, 因此應該用來定義應用程式的行為。
-
建立新型別的時候, 首先要考慮該型別的職責, 根據職責來決定它是值型別還是引用型別。
-
通過公用方法匯出的資料,以及充當屬性的資料都應該被設計成值型別
-
6 條幫助你決定新型別應設計為值型別的 tips:
- 這個型別是否主要用於存放資料?
- 這個型別能否做成不可變的型別?
- 這個型別是否比較小?
- 能否完全通過訪問其資料成員的屬性把這個型別的共有介面定義出來?
- 能否確定該型別將來不會有子類?
- 能否確定該型別將來不需要多型?
-
底層的資料物件最好是用值型別來表示。 而應用程式的行為則適合放在引用型別中。 在適當的地方使用值型別, 可以讓你從類物件中安全地匯出資料副本。 此外, 還可以提高記憶體的使用效率, 因為這些型別的值是基於棧來存放的, 而且可以內聯到其他的值型別中。 在適合的地方使用引用型別, 可以讓你利用標準的面向物件技術來編寫應用程式的邏輯程式碼。如果你還不確定某個型別將來會怎麼用,
那麼就優先考慮將其設計為引用型別。