繁体   English   中英

Activator.CreateInstance和标准构造函数有什么区别?

[英]What is the difference between Activator.CreateInstance and a standard constructor?

以下两个示例之间的区别是什么? Activator的目的是什么,我为什么要使用它?

1。

string objTypeName = "Foo";
Foo foo = (Foo)Activator.CreateInstance(Type.GetType(objTypeName));

2。

Foo foo = new Foo()

我浏览了下面链接的页面,但是没有清晰的图片。

在这里在这里这里

使用Activator.CreateInstance可以创建对象,即使无法直接访问它应属于的类(例如Reflection),也可以例如创建与另一个对象相同类型的对象:

var duplicate = Activator.CreateInstance(original.GetType());

如果您不完全了解原始对象的类,那么这是不可能的。

如果您知道将在设计时实例化的类型,则无需使用Activator.CreateInstance Activator.CreateInstance所做的全部工作就是调用公共默认构造函数。

Activator.CreateInstance是“后期绑定”的一种形式,如果您要实例化在设计时不知道的Type ,它可能会很有用。 如果您已经在设计时知道具体类的类型,那么您肯定要使用“早期绑定”实例化它,它的速度更快,更简单,更明显。 即直接调用适当的构造函数。

Activator.CreatInstance将调用类Foo的默认构造函数。

唯一的区别是,如果您先于类型知道了类型,则使用new的类型创建它会更有意义(且更易读)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM