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

C# Activator.CreateInstance和标准构造函数之间有什么区别?,c#,wpf,c#-4.0,C#,Wpf,C# 4.0,下面两个例子的区别是什么?Activator的用途是什么,我为什么要使用它 一, 二, 我浏览了下面链接的页面,但没有得到一个清晰的图片 ,和。使用Activator.CreateInstance,即使无法直接访问对象应属于的类(例如反射),也可以创建对象,因此您可以创建与另一个对象类型相同的对象: var duplicate = Activator.CreateInstance(original.GetType()); 如果您不确切知道原始对象的类别,则无法创建对象。使用Activator.

下面两个例子的区别是什么?Activator的用途是什么,我为什么要使用它

一,

二,

我浏览了下面链接的页面,但没有得到一个清晰的图片

,和。

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

var duplicate = Activator.CreateInstance(original.GetType());
如果您不确切知道原始对象的类别,则无法创建对象。

使用Activator.CreateInstance,您可以创建对象,即使无法直接访问它应该属于的类别,例如反射,因此您可以创建与另一个对象类型相同的对象:

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

如果您不确切知道原始对象的类,这是不可能的。

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


唯一的区别是,如果您在类型之前就知道您的类型,那么使用new创建它将使其更有意义和可读性。CreatInstance将调用类Foo的默认构造函数


唯一的区别是,如果您在类型之前就知道您的类型,那么使用new创建它会使其更有意义和可读性

如果您知道将在设计时实例化的类型,则无需使用Activator.CreateInstance。Activator.CreateInstance只调用公共默认构造函数


Activator.CreateInstance是后期绑定的一种形式,如果您想实例化在设计时不知道的类型,它会很有用。如果您在设计时已经知道具体类的类型,那么您肯定希望使用早期绑定对其进行实例化,因为早期绑定速度更快、更简单,而且显而易见。i、 e.直接调用相应的构造函数。

如果您知道将在设计时实例化的类型,则无需使用Activator.CreateInstance。Activator.CreateInstance只调用公共默认构造函数


Activator.CreateInstance是后期绑定的一种形式,如果您想实例化在设计时不知道的类型,它会很有用。如果您在设计时已经知道具体类的类型,那么您肯定希望使用早期绑定对其进行实例化,因为早期绑定速度更快、更简单,而且显而易见。i、 e.直接调用相应的构造函数。

第一个比第二个慢,如果你花时间把你的问题编排得很好,并尽可能让它可读,它就更有可能被回答和投票。第一个比第三个慢,如果你花时间把你的问题编排得很好,并且尽可能让它可读,它就更有可能被回答和投票。
var duplicate = Activator.CreateInstance(original.GetType());