首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 結構與類別差異:值型別的效能考量

     編輯:關於C語言

結構 vs 類別核心差異

特性類別結構
型別分類參考型別值型別
繼承支援不支援(隱性繼承 ValueType)
記憶體配置堆積堆疊或內嵌
預設值null零值初始化
參數傳遞傳參考傳值(複製)

記憶體效能實測

建立 100 個 Point 陣列元素:

// 類別版:101 個物件(1 陣列 + 100 元素)
class Point { public int x, y; public Point(int x, int y) { this.x = x; this.y = y; } }
Point[] points = new Point[100];
for (int i = 0; i < 100; i++) points[i] = new Point(i, i*i);

// 結構版:僅 1 個陣列物件,元素內嵌配置
struct Point { public int x, y; public Point(int x, int y) { this.x = x; this.y = y; } }
Point[] points = new Point[100];
for (int i = 0; i < 100; i++) points[i] = new Point(i, i*i);

使用時機與陷阱

  • 適用: 小型、不可變、邏輯單純的資料結構(如座標、複數、日期時間)。
  • 避免: 大型結構、頻繁當作參數傳遞(會造成大量複製)、需多型行為的場景。
  • 效能陷阱: 盲目將類別改為結構可能導致效能下降,因為值傳遞複製成本可能超過參考傳遞。

結構是效能優化工具,而非銀彈。決策前請先分析具體使用情境與基準測試。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved