C 避免在泛型型別中宣告靜態成員

2021-07-28 17:02:28 字數 790 閱讀 1466

在上一建議中,已經理解了應該將mylist和mylist視作兩個完全不同的型別,所以,不應該將mylist中的靜態成員理解成mylist和mylist共有的成員。

class mylist

public mylist()

}static

void main(string args)

執行結果:

若果換成泛型:

class mylist

public mylist()

}static

void main(string args)

執行結果:

實際上,隨著你為t指定不同的資料型別,mylist相應地也變成不同的資料型別,它們之間是不共享靜態成員的。

若t所指定的資料型別一致,那麼兩個泛型物件之間還是可以共享靜態成員的,如上文中的list1和list2。但是為了避免因此引起的混淆,仍舊建議在實際編碼過程中,盡量避免宣告泛型型別的靜態成員。

非泛型型別中靜態泛型方法看起來很接近該例子,但是,非泛型中的泛型方法並不會在執行時的本地**中生成不同的型別。

如下:

class mylist

}static

void main(string args)

執行結果:

C 避免在泛型型別中的宣告靜態成員

在非泛型型別中,各個例項共享靜態成員 1 class program210 11class myclass 1214 public myclass 1518 執行結果 2 現在將myclass宣告為泛型型別 1 class program212 13class myclass14 16public ...

泛型在C 中的應用

泛型在c 中的主要實現為模板函式和模板類。通常使用普通的函式實現乙個與資料型別有關的演算法是很繁瑣的,比如兩個數的加法,要 考慮很多態別 int add int a,int b float add float a,float b 雖然在c 中可以通過函式過載來解決這個問題,但是反覆寫相同演算法的函式...

在父類中反射獲取泛型型別

使用struts2時做crud時,每個action都需要寫相同重複的 於是就想著將這些個 放到乙個父類中,子類直接使用父類中的方法。但是由於儲存的時候需要傳遞乙個具體的實體,而每個action功能不一樣,傳遞的實體也不一樣,於是就想到了反射。子類 public class useraction ex...