Activator.CreateInstance()与'new' [英] Activator.CreateInstance() versus 'new'

查看:71
本文介绍了Activator.CreateInstance()与'new'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述




我需要设计一个创建并返回大量

对象的方法。问题是要创建的对象的* type *直到

运行时才知道。结果,类型为类型的参数被设置为类型。必须传入:


IMyInterface [] CreateObjects(Type type,int numberOfObjects);


在内部,此方法将调用Activator.CreateInstance( )创建

对象。这是我的问题:调用Activator.CreateInstance()与使用new相比,是否存在显着的性能损失

创建

对象?如果是这样,我会寻找另一种方法来完成这项任务。


我真的希望C#支持泛型,这将使​​这种类型的

任务非常简单...


-

此致,


David Sworder
http://www.CodeFanatic.com

推荐答案



" David Sworder" < GI ******** @ CSILasVegas.com>在消息中写道

新闻:美国************** @ TK2MSFTNGP11.phx.gbl ...

"David Sworder" <gi********@CSILasVegas.com> wrote in message
news:uS**************@TK2MSFTNGP11.phx.gbl...

我需要设计一个创建并返回大量
对象的方法。问题是要创建的对象的* type *直到
运行时才知道。结果,类型为类型的参数被设置为类型。必须传入:

IMyInterface [] CreateObjects(Type type,int numberOfObjects);

在内部,此方法将调用Activator.CreateInstance()来创建
对象。这是我的问题:调用Activator.CreateInstance()与使用new相比,是否有显着的性能
惩罚?创建
对象?如果是这样,我会寻找另一种方法来完成这项任务。


它不应该是重要的,不是。虽然CreateInstance可能会比同等的新调用更长时间执行

,但它仍然应该是一小部分时间,即使你产生了相当大的数据。 >
对象数量。运行测试,看看创建

最大对象数所需的时间。如果你要生成*很多*

个对象,那么工厂可能更合适。编写一个可以创建对象的工厂类,而不是加载给定对象的x

编号,

使用Activator.CreateInstance加载工厂,并使用工厂

CreateObject方法用你需要的任何参数创建一个新对象。总而言之,工厂方法也可以提供更清晰的代码,并且

它可以为您提供更多的灵活性(您可以选择在工厂内汇集对象

,使用IDisposable.Dispose释放对象,只需更改工厂代码,日志创建等即可更改具体类型。

它确实需要更多代码给定对象类型,并且不知道你的b $ b情况我不能说它是否会更好。

我真的希望C#支持泛型会使这种类型
任务非常容易......

泛型即将到来,但对通用构造的支持仅限于

无参数构造函数,因此它的实用性在那里但是更少 - 比它更多

在很多情况下。 -
此致,

David Sworder
http: //www.CodeFanatic.com





" David Sworder" < GI ******** @ CSILasVegas.com>在消息中写道

新闻:美国************** @ TK2MSFTNGP11.phx.gbl ...

"David Sworder" <gi********@CSILasVegas.com> wrote in message
news:uS**************@TK2MSFTNGP11.phx.gbl...

我需要设计一个创建并返回大量
对象的方法。问题是要创建的对象的* type *直到
运行时才知道。结果,类型为类型的参数被设置为类型。必须传入:

IMyInterface [] CreateObjects(Type type,int numberOfObjects);

在内部,此方法将调用Activator.CreateInstance()来创建
对象。这是我的问题:调用Activator.CreateInstance()与使用new相比,是否有显着的性能
惩罚?创建
对象?如果是这样,我会寻找另一种方法来完成这项任务。


它不应该是重要的,不是。虽然CreateInstance可能会比同等的新调用更长时间执行

,但它仍然应该是一小部分时间,即使你产生了相当大的数据。 >
对象数量。运行测试,看看创建

最大对象数所需的时间。如果你要生成*很多*

个对象,那么工厂可能更合适。编写一个可以创建对象的工厂类,而不是加载给定对象的x

编号,

使用Activator.CreateInstance加载工厂,并使用工厂

CreateObject方法用你需要的任何参数创建一个新对象。总而言之,工厂方法也可以提供更清晰的代码,并且

它可以为您提供更多的灵活性(您可以选择在工厂内汇集对象

,使用IDisposable.Dispose释放对象,只需更改工厂代码,日志创建等即可更改具体类型。

它确实需要更多代码给定对象类型,并且不知道你的b $ b情况我不能说它是否会更好。

我真的希望C#支持泛型会使这种类型
任务非常容易......

泛型即将到来,但对通用构造的支持仅限于

无参数构造函数,因此它的实用性在那里但是更少 - 比它更多

在很多情况下。 -
此致,

David Sworder
http: //www.CodeFanatic.com



> >我真的希望C#支持泛型,这将使​​这种类型

> > I really wish that C# supported generics which would make this type
of
任务非常简单......
泛型即将到来但是对于无参数构造函数的通用构造的支持是有限的
task incredibly easy...
Generics are coming, but the support for generic construction is limited



,所以它的实用程序在那里,但在很多情况下会比它少得多。


to parameterless constructors, so its utility is there but less-so than it
would be in many cases.



为什么会这样?


-

cody


[免费软件,游戏和幽默]
www.deutronium.de.vu | | www.deutronium.tk


Why is that???

--
cody

[Freeware, Games and Humor]
www.deutronium.de.vu || www.deutronium.tk


这篇关于Activator.CreateInstance()与'new'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆