C# Generic(泛型)- 我真正理解 Generic 的方式

前言 以前學 Generic,我只記住一句話: Generic 可以重複利用程式碼。 這句話沒有錯,但一直讓我無法真正理解 Generic 的設計目的。 直到我開始站在 Framework 設計者 的角度思考,我才發現: Generic 真正想解決的是「保留真正的型別」。 如果沒有 Generic,我會怎麼設計? 假設今天要交換兩個變數。 第一個想到的方法就是每個型別都寫一份。 void Swap(int a, int b) { } void Swap(string a, string b) { } void Swap(Student a, Student b) { } 問題就在,如果有 100 種型別,就要寫 100 個版本。 因此想要有個方法能夠接受任意型別的參數。 那全部改成 object 不就好了? 第二個想到的方法就是: void Swap(object a, object b) { } 這方法能夠接受所有型態,但是會有問題。 Value Type 需要 Boxing int x = 10; object obj = x; CLR 必須建立一個新的 Heap Object,因此會產生 Boxing。 ...

July 23, 2026 · 2 min · Yen Tsai