以前總是看到泛型類中的泛型型別總感覺暈暈的,這次來個記錄部落格...如果以後再懵的話,希望回頭看到自己這篇部落格能給自己乙個提醒...
泛型類↓
#region test//////測試泛型
/// ///
泛型型別t
public
class testwhere t : class
public
test(t t)
//////
/// ///
///public
string
泛型型別t但不是泛型方法(t t)
//////
使用預設t型別的乙個方法;
///"中的型別引數同名
/// ///
//////
public
string 乙個引數t_t_t(t t)
public
string 乙個引數t1_t1_t1(t1 t1)
public
string 乙個引數t1_t_t(t t) //
where t1 : class
public
string 兩個引數t1_tt1_tt1(t t, t1 t1)
//////
/// ///
//////
//////
public
string 兩個引數tt1_tt1_tt1(t t, t1 t1)
public
string 兩個引數t1t2_t1t2_t1t2(t1 t1, t2 t2)
}#endregion
實現測試**↓
#region test//測試所用到的型別sp
system.media.soundplayer sp = new
system.media.soundplayer();
string test_str = ""
; test
t_i = new test(test_str);
#region 泛型型別t但不是泛型方法(非泛型方法)
//此時為非泛型方法了;因為它引數只能是string(在new test(test_str);已經確定了引數型別)
test_str = t_i.泛型型別t但不是泛型方法(""
);
//接收的引數型別是在例項化的時候決定的...
testt_sound = new test();
test_str =t_sound.泛型型別t但不是泛型方法(sp);
#endregion
); test_str = t_i.乙個引數t_t_t("0"
); test_str =t_i.乙個引數t_t_t(sp);
#endregion
#region 乙個引數t1_t1_t1(目測功能和上面的那個[乙個引數t_t_t]一樣一樣的...)test_str = t_i.乙個引數t1_t1_t1("
string");
test_str = t_i.乙個引數t1_t1_t1("
string");
test_str = t_i.乙個引數t1_t1_t1(0
); test_str =t_i.乙個引數t1_t1_t1(sp);
#endregion
#region 乙個引數t1_t_t()test_str = t_i.乙個引數t1_t_t("
string");
test_str = t_i.乙個引數t1_t_t("0"
); test_str = t_i.乙個引數t1_t_t("0"
);
//test_str = t_i.乙個引數t1_t_t(0);
//報錯→引數1:無法從"int"轉換為"string"
#endregion
#region 兩個引數t1_tt1_tt1(這個第乙個引數已經在例項化的時候[new test(test_str)]就已經指定為string,即第乙個引數就是t的型別)test_str = t_i.兩個引數t1_tt1_tt1("
7", 5);//
這裡t型別為string,t1型別為int,
//可以簡化名稱:test_str = t_i.兩個引數t1_tt1_tt1("7", 5);
test_str = t_i.兩個引數t1_tt1_tt1("
7", "
5");//
這裡t型別為string,t1型別為string,怎麼判斷"5"是什麼型別?→型別推斷...
test_str = t_i.兩個引數t1_tt1_tt1("
7", sp);//
這裡t型別為string,t1型別為system.media.soundplayer,
//test_str = t_i.兩個引數t1_tt1_tt1(7, 5);
//報錯→引數1:無法從"int"轉換為"string"
#endregion
#region 兩個引數tt1_tt1_tt1(比上乙個[兩個引數t1_tt1_tt1]更靈活)test_str = t_i.兩個引數tt1_tt1_tt1(0, 0
); test_str = t_i.兩個引數tt1_tt1_tt1(0, 0
); test_str = t_i.兩個引數tt1_tt1_tt1("
string
", sp);
#endregion
#region 兩個引數t1t2_t1t2_t1t2(和上乙個[兩個引數tt1_tt1_tt1]目測一樣的...)test_str = t_i.兩個引數t1t2_t1t2_t1t2("", ""
); test_str = t_i.兩個引數t1t2_t1t2_t1t2(0, ""
);
#endregion
//將滑鼠放到f1位置,顯示:使用預設t型別的乙個方法;
#endregion
泛型的基礎知識整理
泛型就是將具體的型別引數化,將型別定義成引數形式,等到使用的時候再傳入具體的型別。泛型可以使用在類 介面和方法中。泛型的優勢 編譯時檢查 的型別安全,從而減少出錯的概率 消除了強制型別轉換,沒有泛型的返回值,我們可以認為是乙個object,在使用時需要對其進行強制轉換,這樣就可能會出現classca...
C 基礎知識(八)泛型
泛型的好處很多,包括復用性 可供多個型別使用而不用每個型別都定義一次 型別安全 不合法的型別報錯 高效率 減少裝箱和拆箱 舉例 假設我們有乙個父類animal,所有動物繼承這個類,現在需要做乙個比較動物重量的方法,如果不用泛型,則我們隊沒類動物都需要過載一次比較的方法 public class an...
C 基礎知識 泛型程式設計 模板
類模板首先思考乙個問題 如何實現乙個通用的交換函式呢?這裡很多人可能會想到函式過載,沒錯,函式過載可以實現不同型別資料的交換,但是也有很大的缺陷 過載的函式僅僅只是型別不同,的復用率比較低,只要有新型別出現時,就需要增加對應的函式 的可維護性比較低,乙個出錯可能所有的過載均出錯 那能否給編譯器乙個模...