实例化方式的比较 Activator和new
void Start(){System.Activator.CreateInstance<Food>().Eat();}
void Start(){Create<Food>().Eat();}T Create<T>()where T:new (){T t = new T();return t;}
两句代码都能实现同样的效果
实例化一个类的方式
用 New 关键字实例化一个类 New 关键字用于创建对象和调用构造函数。是实例化一个类最常见的方式。用 Activator 实例化一个类 Activator 用以在本地或从远程创建对象类型,或获取对现有远程对象的引用。其 CreateInstance 方法创建在程序集中定义的类型的实例。
用 Assembly 实例化一个类 Assembly
表示一个程序集,它是一个可重用、无版本冲突并且可自我描述的公共语言运行库应用程序构造块。该类可以加载程序集、浏览程序集的元数据和构成部分、发现程序集中包含的类型以及创建这些类型的实例。
三种实例化一个类的方式的性能比较:
加载程序集的推荐方式是使用 Load 方法。GetType 方法可用于在程序集中搜索特定类型。CreateInstance方法可用于在程序集中搜索和创建类型的实例。
由上图可以看出,用 Activator 实例化一个类最快;其次是用 New 关键字;最慢的是用 Assembly 实例化。Activator
比 用 New 都快。因此,若想动态实例化一个类,根据你的实际情况,尽量将需要实例化的类放在同一个程序集。
三种实例化一个类的方式的性能比较—船长&CAP
实例化方式的比较 Activator和new相关推荐
- Java中各种对象的各种实例化方式
Java 中万物皆对象,Linux 中一切皆文件 先简单的说下对象的实例化过程: 首先我们要有个意识,就是创建一个类的实例化对象,内存中必须已经加载了这个类 所以,不论是 new 还是反射或是 Uns ...
- 几种对象实例化方式详解
一)对象实例化常用方式 方式一:直接new一个对象,最常用的一种. 方式二:反射,通过Class.forName("类的全限定名"). 方式三:构造器,通过Class.forNam ...
- 静态成员内部类和非静态成员内部类的实例化方式
public class Person { static class Dog { } class Bird{ } public static void main(String[] args) { Pe ...
- 详解C#实例化对象的三种方式及性能对比
前言 做项目过程中有个需求要实例化两万个对象并添加到List 中,这个过程大概需要1min才能加载完(传参较多),于是开启了代码优化之旅,再此记录. 首先想到的是可能实例化比较耗时,于是开始对每种实例 ...
- Spring Bean、XML方式Bean配置、Bean实例化配置、Bean注入
文章目录 Bean管理 一.SpringBoot Bean 初了解 1.1 了解 1.2 Bean的作用域 1.2.1 注意事项 1.3 第三方Bean 二. 基于XML方式Bean的配置 2.1 S ...
- Java中创建(实例化)对象的五种方式
Java中创建(实例化)对象的五种方式 1.用new语句创建对象,这是最常见的创建对象的方法. 2.通过工厂方法返回对象,如:String str = String.valueOf(23); 3.运 ...
- 创建(实例化)对象的五种方式
目录 一.Java中创建(实例化)对象的五种方式 1.new关键字创建对象; 2.调用对象的clone()方法创建对象 3.通过反射对对象进行初始化 4.序列化 5.通过工厂方法返回对象 二.Java ...
- WCF后续之旅(10): 通过WCF Extension实现以对象池的方式创建Service Instance
我们知道WCF有3种典型的对service instance进行实例化的方式,他们分别与WCF的三种InstanceContextMode相匹配,他们分别是PerCall,PerSession和Sin ...
- C# Activator
需要动态的创建一个实例模型的时候,就用Activator.CreateInstance(Type type);如果是明确的知道要创建哪个实例的模型,就可以用 new C#在类工厂中动态创建类的实例,所 ...
最新文章
- Eclipse进行可视化的GUI开发3大GUI插件
- layui监听当前页_事件监听 · layui使用手册 · 看云
- Psscor2 - 微软内部的SOS升级版(知道.net3.5)
- socket入门教程
- arcLength函数
- 单步调试时遇到cout和cin会自动跳到ostream文件中的解决方案
- 归并排序算法 C++
- 大数据学习(06)-- 云数据库
- 超Mask RCNN速度4倍,仅在单个GPU训练的实时实例分割算法
- 自定义http报头_浅谈http协议(三):HTTP 报文及其结构
- “在 GitHub 用十年攒的 54k+ Star,一个误操全没了”
- 通过代码学 Sutton 强化学习:SARSA、Q-Learning 时序差分算法训练 CartPole
- php获取xml中的数据格式_php-从xml文件获取数据
- 今天晴儿和老佛爷又一起上台了
- LeetCode 150. 逆波兰表达式求值(Evaluate Reverse Polish Notation) 24
- 不动点迭代法的收敛阶
- lambda的peek(流元素操作),filter(过滤),map(映射),limit(截断),skip(跳过),collect,distinct(去重)函数使用
- A记录 CNAME记录是什么 | DNS 查询的过程 | DNS 根服务器是什么 | 配置域名 CNAME 原理
- nginx集群与高并发
- 精容数安政务云灾备解决方案
热门文章
- openeuler 欧拉操作系统的几个图形界面安装方法
- 无线蓝牙手表FCC ID认证测试项目有哪些?
- MyBatis源码的学习(9)---映射器mappers的的XML解析
- CST视图view的操作
- Python 医学知识图谱问答系统(一),建立医学知识图谱,基于neo4j知识图谱的医学问答体系
- Google 认证之GMS 认证
- Five-degree-of-freedom manipulation of an untethered magnetic device in fluid using a single permane
- pt100转4-20mA,一转一/二转二热电阻温度变送器
- NAACL2022信息抽取论文分类
- AndroidStudio使用之仿微信首页界面