???????濴????????IL?????е?????????
????GenericTest.CompareUtil`1<([mscorlib]System.IComparable)T>
????`1????????????????????????
????<([mscorlib]System.IComparable)T>??????????????????????????
????!T??!0
????!T????????????λ??
????!0????????????????????????????2???!1?????????????????
????????????????????·????????????????????IL????
????IL_0003:newobj instance void class GenericTest.CompareUtil`1<int32>::.ctor(!0??!0)
????IL_0012:newobj instance void GenericTest.IntCompareUtil::.ctor(int32??int32)
???????????
????????????????????????C#??????????CLR????????????????????????????????????????飺
????????????????”CompareUtil<T>”????????????????????????????????IL???????????????????????λ??????????????
??????????????????????????”on-demand”??????????????????????”CompareUtil<int>compareInt”?????????ε??????????????????JIT???????????IL???????????????????????????????????????????????????????????????????
????????????????????????
????JIT?????????????”????????”??????????????????????????????????????????????е????t?????????С??
???????????????????”?????”?????????????”?????”??JIT???????????????????????
??????????????÷?????????????????????????????
????List<int>intList=new List<int>();
??????????????????IL???????????????????У???????????????????????????
????//Fields
????.field private!T[]_items
????????????????typeof
??????C#?У???????????typeof??????????????System.Type????????á?
?????????????????????????????????????typeof??
?????????????????壨δ???????????
????????????????????壬???????????????????????????е???????????????????
????????????????????????????????????????????
??????????????????
???????濴????????????
????static void DemonstrateTypeOf<T>()
????{
????Console.WriteLine(typeof(T));
????Console.WriteLine(typeof(List<>));
????Console.WriteLine(typeof(Dictionary<??>));
????Console.WriteLine(typeof(List<T>));
????Console.WriteLine(typeof(Dictionary<string??T>));
????Console.WriteLine(typeof(List<long>));
????Console.WriteLine(typeof(Dictionary<string??int>));
????}
????????????????£?
????System.Double
????System.Collections.Generic.List`1[T]
????System.Collections.Generic.Dictionary`2[TKey??TValue]
????System.Collections.Generic.List`1[System.Double]
????System.Collections.Generic.Dictionary`2[System.String??System.Double]
????System.Collections.Generic.List`1[System.Int64]
????System.Collections.Generic.Dictionary`2[System.String??System.Int32]
?????????????????????????????????????????????????????δ?????????????????????????
?????????κ?????????
?????????е??????

??????C#?У????????????????????????????????????????????????????C#2.0????????????????????????????????????Щ?仯????????????????????????乲????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????
????namespace GenericTest
????{
????class TypeWithField<T>
????{
????public static string field;
????public static void PrintField()
????{
????Console.WriteLine(field);
????}
????}
????class Program
????{
????static void Main(string[]args)
????{
????TypeWithField<int>.field="Int Field";
????TypeWithField<string>.field="String Field";
????TypeWithField<int>.PrintField();
????TypeWithField<string>.PrintField();
????Console.Read();
????}
????}
????}
?????????е?????????
??????????????????????????????????в???????????.NET???????????????????????????????????????Ρ?
?????????е?????????????????????????????????????е?????????????????????ɡ?
???????
?????????????????????????????????????????????????????????????????????????????÷????????????????