首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> C# 入門

C# 深度探索(六):統一型別系統與裝箱/拆箱機制

     編輯:C# 入門

C# 獨創的統一型別系統:打通值與參考的橋樑

C# 引入統一型別系統,所有型別(包括值類型與參考類型)概念上都衍生自 object。這意味著連 int 這類「簡單型別」也能直接呼叫 object 的方法。

簡單型別也能呼叫方法

using System;

class Test {
    static void Main() {
        Console.WriteLine(3.ToString());  // 呼叫 object.ToString()
    }
}

裝箱與拆箱:值類型與參考類型的轉換橋樑

class Test {
    static void Main() {
        int i = 123;
        object o = i;      // 裝箱:值類型 → 參考類型
        int j = (int)o;    // 拆箱:參考類型 → 值類型
    }
}

裝箱 會在堆疊建立物件並複製值;拆箱 則從物件取回值。這讓值類型能在需要物件的場合(如集合儲存)使用。

實務優勢:泛型演算法的統一處理

傳統 C++ 需用模板處理多型別比較:

// C++ 模板
template
T min(T i, T j) { return (i < j) ? i : j; }

C# 透過統一型別系統,單一方法即可處理所有型別:

void Compare(object a, object b) {
    // 可比較 int、float、string 甚至自訂類別
    // (需實作 IComparable 介面)
}

⚠️ 使用警示

這種靈活性帶來風險:編譯器不會阻止比較 int 與自訂 class 的實例,執行時才會擲出例外。開發時務必謹慎設計,確保型別相容性。

核心價值

  • 簡化集合操作(ArrayList 等可儲存任意型別)
  • 支援泛型程式設計基礎
  • 統一 API 設計,減少重複程式碼
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved