通常我会调用Expression.New(type)
,但是当某个类型没有无参数构造函数时,这是不可能的。
FormatterServices.GetUninitializedObject()
如何在内部工作?operator new()
比调用FormatterServices.GetUninitializeObject()
更快吗?Expressions
等同于GetUninitializedObject
,或者唯一的方法是使用Expression.Call
吗?答案 0 :(得分:1)
来自MSDN:
因为对象的新实例初始化为零并且没有运行构造函数,所以该对象可能不表示该对象认为有效的状态。当用户打算立即填充所有字段时,当前方法只应用于反序列化。它不会创建一个未初始化的字符串,因为创建一个不可变类型的空实例是没有用的。
所以,回答你的问题:
new()
构造函数什么都不做,它们可能大致相同。Expression.Call
,如果您想对任何类型的object
执行任何操作,那么它将返回Expression.Convert
。