对于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;

}

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

转载于:https://www.cnblogs.com/think8848/archive/2008/12/04/1347643.html

[转]对C#泛型中的new()约束的一点思考相关推荐

  1. 工作中对数据分析思路的一点思考

    工作中,经常会遇到产品.运营等各方人员对某个数据的疑问,或者各种各样的数据需求和数据问题.对于数据从业者,我越来越意识到我们不仅仅需要掌握必要的编程基础和专业知识,也需要掌握一些常见的数据分析思路,进 ...

  2. WPF中显示CAD图形的一点思考

    文章目录 1.GIS图形的显示 2.CAD图形显示 3.思考 项目中使用WPF做了一个GIS图形和CAD详图的关联工具,为了让用户在关联的过程中能更准确的识别要关联的CAD图形和GIS图形,做了一个图 ...

  3. Java泛型中extends T和super T的区别?

    <? extends T>和<? super T>是Java泛型中的"通配符(Wildcards)"和"边界(Bounds)"的概念. ...

  4. java中super()_Java 泛型中 extends 和 super 的区别是什么?

    <? extends T> 和 <? super T> 是 Java 泛型中的 "通配符(Wildcards)" 和 "边界(Bounds)&qu ...

  5. 【Java】泛型中 extends 和 super 的区别?

    <? extends T>和<? super T>是Java泛型中的"通配符(Wildcards)"和"边界(Bounds)"的概念. ...

  6. java super extend 区别_Java泛型中extends和super的区别

    extends T>和 super T>是Java泛型中的"通配符(Wildcards)"和"边界(Bounds)"的概念. extends T&g ...

  7. 设计一个Windows应用程序,要求如下: 构造一个产品基类。 分别定义家电、日用百货、衣服等派生类,具体要求有不同的特征和行为。 定义一个泛型货架类,约束参数类型为产品

    设计一个Windows应用程序,要求如下: 构造一个产品基类. 分别定义家电.日用百货.衣服等派生类,具体要求有不同的特征和行为. 定义一个泛型货架类,约束参数类型为产品类.该泛型的货架类包括一个泛型 ...

  8. C#设计一个Windows应用程序,要求如下。 ①构造一个产品基类。 ②分别定义家电、日用百货、衣服等派生类,要求具有不同的特征和行为。 ③定义一个泛型货架类,约束参数类型为产品类。该泛型的货架类包

    设计一个Windows应用程序,要求如下. 1.构造一个产品基类. 2.分别定义家电.日用百货.衣服等派生类,要求具有不同的特征和行为. 3.定义一个泛型货架类,约束参数类型为产品类.该泛型的货架类包 ...

  9. 聊一聊Java 泛型中的通配符 T,E,K,V,?

    点击上方"方志朋",选择"设为星标" 回复"1024"获取独家整理的学习资料 作者:glmapper juejin.im/post/5d57 ...

最新文章

  1. matlab 手掌轮廓,CG_图片轮廓mask提取-matlab
  2. 机器人工具箱 V9.10(Robotics Toolbook) (1):建立机器人模型
  3. linux开机启动open,树莓派-linux的多种启动自运行方式
  4. Daily Scrum4 11.6
  5. 微课|中学生可以这样学Python(2.3.4节):例2-2
  6. 李沐亚马逊资深首席科学家 - 动手学深度学习v2 -2安装
  7. 计算机网络网际协议实验报告,计算机网络网际协议ip实验报告.doc
  8. 2020秋招华为笔试题-买钉子
  9. 在线光纤网速测试软件,adsl网速测试(中国移动宽带专用测速软件)
  10. 如何判断患者服用的温度敏感性药品依旧安全有效?
  11. Convert Binary Search Tree to Sorted Doubly Linked List
  12. leetcode_83_Remove Duplicates from Sorted List
  13. 计算机网络系列笔记(六) - 物理层
  14. networkx 画图中文方块
  15. php中网页字体颜色的代码,HTML5画布如何设置字体颜色?(代码示例)
  16. 花园体育馆计算机房音乐教室的英语,四年级英语下册pep知识点复习.ppt
  17. 如何减少电路中器件噪声
  18. SAP一共有多少模块?
  19. 金武士ups电源故障情况类型分析及维修
  20. 思维导图软件:幕布 for mac

热门文章

  1. AndFix解析——(上)
  2. android 自定义banner,Android项目 引入Banner开源库(轮播图)
  3. 查询数据的排序的位置_简单选择排序C++实现
  4. JZOJ 5623. 【NOI2018模拟4.2】program
  5. nohup 带参数_广州市西门子两通阀VVF42.40-25C+SKD62带断电
  6. 理解矩阵 的一些评论
  7. BZOJ 3218 UOJ #77 A+B Problem (主席树、最小割)
  8. NOIP2018退役记
  9. go 获取内核个数_图解Go运行时调度器
  10. 2021-05-10 矩阵AB和矩阵BA有什么联系?