首页 >> 读书频道 >> 电脑 >> 对C#泛型中的new()约束的一点思考
 
· 选择VB.NET还是C#
· 用C#实现生成PDF文档
· XML及其应用
· 利用Visual C#实
· 用C#开发.NET CF
· 页面数据缓存
· 用C#和本地Window
· 页面输出缓存
· 在C#程序设计中使用Wi
· 性能优化
· 一个简单的Web Ser
· 用Visual C#打造
 
· 电视剧《刁蛮公主》下载和
· 美容养颜手册
· 加油金顺剧情分集介绍完整
· 红楼梦:120回全本[清
· 素质教育在美国
· 全唐诗卷四十六
· 韩剧《布拉格恋人》剧情介
· 夜航船[作者:明·张岱]
· 局外人[作者:韩·可爱淘
· 现场流行病学
· 源氏物语[日本:紫式部]
· 武林寓言故事
 
· (出租)中动商场部分及写
· (出租)中动动漫基地&#
· 喜剧学院
· 《善德女王》剧情介绍
· 魔女18号 剧情
· 丑女无敌剧情介绍
· 魔女幼熙剧情介绍
· 龙游天下剧情介绍
· 震撼世界的七日剧情介绍
· 静静的白桦林剧情介绍
· 心情日记—老公今天我想对
· 旗舰剧情介绍
欢迎来到月影社区!如果您觉得这里不错,请推荐给您的朋友们。月影社区:http://wf66.com/

对C#泛型中的new()约束的一点思考


查看有无更新版本

关键字:VC 2006-9-20

 

对于new()约束,大家可能有一个误解,以为使用了new约束之后,在创建对象时与非泛型的版本是一致的:

public class Tester<T>
where T:new()
{
public Tester()
{
t = new T();//等同于非泛型版本的new? 例如 object o = new object();?
}

private T t;

}

事实上,使用new关键字的作用只是让编译器在泛型实例化之处,检查所绑定的泛型参数是否具有无参构造函数:

Tester<SomeType> t = new Tester<SomeType>();
//此处编译器会检查SomeType是否具有无参构造函数。若没有则会有compile error。

而Tester<T>类的构造函数中的new代码,实际上等同于下面的代码:

public class Tester<T>
where T:new()
{
public Tester()
{
 t = System.Activator.CreateInstance<T>();
}

private T t;

}

也就是说,仍然是用反射机制来获取泛型对象的实例的。

对C#泛型中的new()约束的一点思考

[ 1 ]
对C#泛型中的new()约束的一点思考 num

打印本页 关闭

关于我们版权声明本站导航友情连结作品演示 TOP↑