关于泛型new()约束!

长期以来,我个人一直以为,使用new约束,就可以在方法中,创建对象时与非泛型版本一样。如:

 

TEntity entity = new TEntity(); // 以为等同于object o =new object();

事实上,它的作用只是让编译器在泛型实例化的时候,检查其所绑定的泛型实例是否具有无参数的构造函数,即默认构造函数。

 

实事上,泛型对象的实例,仍然是通过反射来获取的。如:

TEntity entity = System.Activator.CreateInstance<TEntity>();

 

TEntity entity = new TEntity();  // 此处编译器会检查TEntity 是否具有默认构造函数(无参数构造函数)。如没有,则会出现编译错误。

posted @ 2010-03-29 21:19  bndy  阅读(1498)  评论(0编辑  收藏  举报