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

2022-07-16 08:51:08 字數 767 閱讀 8034

在非泛型型別中,各個例項共享靜態成員:

1

class

program210

}11class

myclass

1214

public

myclass()

1518 }

執行結果:

2

現在將myclass宣告為泛型型別:

1

class

program212

}13class myclass14

16public

myclass()

1720 }

執行結果:

2

1

在**裡,建立例項時為t指定了不同的資料型別,myclass相應地也變成了不同的資料型別,不同型別之間不共享靜態成員;但是若t所指定的資料型別時一致的,那相同型別的例項是可以共享靜態成員。

為了避免混淆,建議盡量避免在泛型型別中的宣告靜態成員。

非泛型型別中的泛型方法並不會在執行時的本地**中生成不同的型別。

1

class

program210

}11class

myclass

1218 }

執行結果:

0

12

參考:《編寫高質量**改善c#程式的157個建議》陸敏技

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

在上一建議中,已經理解了應該將mylist和mylist視作兩個完全不同的型別,所以,不應該將mylist中的靜態成員理解成mylist和mylist共有的成員。class mylist public mylist static void main string args 執行結果 若果換成泛型 c...

泛型在C 中的應用

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

c 判斷 泛型t 型別 C 泛型方法的型別推斷

這裡所謂的 泛型方法的型別推斷 指的是根據已有的方法實參的型別,推斷出泛型方法的型別實參。例如乙個泛型方法 void method t args 如果我給出方法實參型別是 int,那麼希望能夠推斷出 t int。或者舉個複雜點的例子,對於下面的泛型方法定義 void method ilist a,p...