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

C# 語法學習:裝箱 Boxing 與拆箱 Unbox 基礎觀念與隱性發生場景 (1)

     編輯:關於C語言

裝箱示意圖1 裝箱示意圖2 拆箱示意圖 避免裝箱寫法

基礎範例:隱性裝箱拆箱計數


using System;
class Test {
    static void Main() {
        int i = 123;           // 1. 裝箱:int → object
        object o = i;
        i = 456;
        Console.WriteLine(i + ", " + (int)o); 
        // 2. 裝箱:i 參與字串連接 → object
        // 3. 拆箱:(int)o
        // 4. 裝箱:拆箱結果參與字串連接 → object
        // 總計:3 次裝箱、1 次拆箱
    }
}

優化寫法


// 版本 A:2 次裝箱
Console.WriteLine(i + ", " + o); 

// 版本 B:1 次裝箱 (i.ToString() 回傳 string,無裝箱)
Console.WriteLine(i.ToString() + ", " + o); 

// 版本 C:0 次裝箱 (插值字串 C# 6+)
Console.WriteLine($"{i}, {o}");

常見隱性裝箱場景

  • 值型別賦值給 object/介面變數。
  • 值型別參與字串連接 + (呼叫 String.Concat(object, object))。
  • 值型別傳遞給 params object[] 方法。
  • 非泛型集合 ArrayList、Hashtable 加入值型別。

核心原則

「不注意就會發生裝箱拆箱」。善用泛型、ToString()、插值字串、StringBuilder 避免非必要裝箱。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved