在開發人員中,結構體的使用一直是一個爭論不休的話題,關於其適當的應用方式,意見不一。本文旨在根據最佳實踐和實際示例,指導何時應考慮使用結構體。
與其僅僅依賴第三方資源,不如參考微軟關於結構體使用的官方立場,這能提供寶貴的見解:
對於小型、短暫或嵌入式對象,請考慮使用結構體。
除非滿足以下條件,否則避免使用結構體:
有趣的是,微軟內部代碼有時會違反這些規則,這展示了這樣做的靈活性和實際原因。例如,Dictionary<TKey, TValue>
使用內部結構體來提高性能並滿足接口實現要求。
根據微軟的建議和對實際用法的檢查,出現了以下改進後的規則:
Dictionary<TKey, TValue>
類提供了一個結構體用法的說明性示例:
Entry
和 Enumerator
代表單個值。 為了理解結構體和類之間的性能差異,請考慮對包含 300,000 個整數的字典執行以下操作:
操作 | 结构体 | 类 |
---|---|---|
容量 | 312874 | 312874 |
内存大小 | 2660827 字节 | 2660827 字节 |
调整大小时间 | 5 毫秒 | 26 毫秒 |
总填充时间 | 889 毫秒 | 964 毫秒 |
使用結構體的性能提昇在更快的調整大小方面很明顯,這證明了值類型的效率。但是,初始化結構體的引用類型數組會產生額外的性能成本。
是否使用結構體或類應取決於應用程序的具體要求。對於面向值的物件,結構體提供了性能優勢和邏輯凝聚力。通過仔細遵守所討論的原則並考慮實際影響,開發人員可以有效地利用結構體來增強其 C# 代碼庫。
以上是C#中的結構與類:什麼時候應該選擇一個結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!