这个问题问得有些深。我觉得是当调用 CreateInstance的时候,编译器会自动执行对应类的构造方法。
泛型的问题,当你用确定的类型调用的时候,自然就有确定的类型了,可能编译器会自动重新按照确定的类型生成一个新的此方法。不一定正确,个人理解。

解决方案 »

  1.   

    反射2楼的解释不错,泛型的问题我看过一些资料是说.net的泛型是有个标志的,操作的时候检查这个标志,如果有标志就不用强制转换.Java的泛型仍然要强制类型转换
      

  2.   

    范型的实现是具体一个类完成的。在定义范型的时候,需要指定一个类型,这个类型表示了某一种具体的类型。
    但是如果在你的范型里面需要调用这个抽象的类型的方法的时候,那么这个所谓抽象的类型就不那么抽象了。
    比如如下的代码:
    class OneClass<T>
    {
         public class DoIt(T cTheT)
         {
              cTheT.DoIt();
         }
    }这时可以认为T是一个接口或者父类,其中包含了虚方法DoIt。在C#的范型中有where关键字,当你使用了这个关
    键字后,虽然具体的类型还是未知或者抽象的,但是你至少可以知道where限定的那些方法是那个抽象的类实现的
    是可以直接调用的。从这个角度来说也不是很抽象。反射个人认为不是很抽象,也就是后期邦定而已,这个技术由来已久,在解释型语言中很常见。