目錄
泛型是什么?
泛型的主要優勢
創建一個泛型類
泛型方法
泛型是什么?
泛型是通過參數化來實現同一份代碼上操作多種數據類型 ?利用參數類型將參數的類型抽象化 從而實現靈活的復用總結: 通過泛型可以實現在同一份代碼上操作多種數據類型的邏輯 ?將類和類中的成員定義為泛型 在使用時再指明類型 從而實現對不同數據類型的操作
在 C# 中,泛型(Generics)是一種允許你定義類型安全的數據結構和方法,而無需指定具體數據類型的技術。這使得代碼可以更靈活、更通用,同時保持類型安全性。
泛型的主要優勢
- 類型安全:在編譯時就能檢測到類型不匹配的錯誤,無需運行時類型轉換
- 代碼重用:一份代碼可以處理多種數據類型
- 性能提升:避免了裝箱和拆箱操作
- 清晰的代碼:明確表達代碼的意圖
創建一個泛型類
//泛型類 泛型類可以在類中的任意成員中使用 internal class Class2 <T>//Type的縮寫 類型是不確定的 可以當做任意類型 當使用時必須指明類型 {//泛型數據public T a;public T b;//構造函數public Class2(T a, T b){this.a = a;this.b = b;Console.WriteLine(a); Console.WriteLine(b);}public T Add(){//dynamic 動態類型 可以儲存任意類型的的值 在動態類型變量中,這些變量的類型是在運行時發生dynamic a = this.a;dynamic b = this.b;return a + b;} }
主函數
static void Main(string[] args){Class2<int> c2 = new Class2<int>(10,20);c2.Add();Class2<double> c3 = new Class2<double>(10.2, 20.3);c3.Add();Class2<string> c4 = new Class2<string >("sad","sdaa");c4.Add();}
泛型方法
創建一個泛型方法? ? 方法名的后面加上<T>
這里的兩個泛型相加,不能直接相加 ?因為a+b是在書寫代碼時檢查的 而此時a和b的數據類型是不知道(直接相加會報錯)? 指定了泛型的類型時才能知道 ?
怎么解決? ?要讓系統代碼檢查在指定了泛型的類型之后? ,這里使用動態類型?dynamic,dynamic ?動態類型 ? 可以儲存任意類型的值在動態類型變量中 這些變量的類型是在運行(編譯)時發生的
public static void Add<T>(T a, T b) {dynamic c = a;dynamic d = b;Console.WriteLine(c+d); }
?Main函數調用
Add<string>("張三", "123");