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

C# 語法學習:裝箱 Boxing 與拆箱 Unbox 效能影響分析 (2)

     編輯:關於C語言

MSDN 官方效能數據

  • 裝箱耗時 ≈ 一般指派的 20 倍 (需配置新物件、複製值)。
  • 拆箱耗時 ≈ 一般指派的 4 倍 (型別檢查 + 複製值)。
實務編程應盡量避免 裝箱/拆箱操作。

結構體裝箱實測


using System;
using System.Collections;
struct Person {
    private string _name;
    public Person(string name) { _name = name; }
    public string Name { get { return _name; } set { _name = value; } }
}
class Test {
    static void Main() {
        ArrayList arr = new ArrayList();
        Person p = new Person("張三");
        arr.Add(p);          // 發生裝箱:值型別 → object
        p.Name = "李四";
        Console.WriteLine(p.Name);           // 李四 (原變數已修改)
        Console.WriteLine(((Person)arr[0]).Name); // 張三 (盒子內副本未變)
    }
}
  • ArrayList 僅接受 object,值型別加入必裝箱。
  • 修改原變數 不影響 已裝箱副本,易造成邏輯錯誤。
  • 解決:改用 List<Person> 泛型集合,完全避免裝箱。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved