有人能举例说明如何在运行时创建结构实例吗?我正在使用的结构没有定义任何构造函数,只是字段。 GetConstructor()方法返回null,到目前为止我无法找到实现此目的的方法。
答案 0 :(得分:6)
只需使用Activator.CreateInstance(Type)
。
大多数结构实际上没有无参数构造函数 - 使用了不同形式的IL(initobj
指令IIRC)。
另一方面,如果一个结构体没有任何构造函数,那表明它不是非常有用或者它是可变的 - 并且可变结构可能导致各种问题。如果您自己控制结构代码,我建议给它一个构造函数并使其不可变。有些情况下,可变结构是必要的邪恶(特别是在互操作之外),但如果可能的话,它们是值得避免的。
答案 1 :(得分:5)
您是否尝试过使用:
Object o = Activator.CreateInstance(Type t);
......或其他一些重载?
http://msdn.microsoft.com/en-us/library/system.activator.createinstance%28v=VS.100%29.aspx