任何人都可以提供一個示例如何在運行時創建結構實例嗎?我正在使用的結構沒有定義任何構造函數,只是字段。 GetConstructor()方法返回null,到目前爲止我無法找到實現此目的的方法。在運行時C#結構實例化
4
A
回答
6
只需使用Activator.CreateInstance(Type)
。
大多數結構實際上並沒有無參數的構造函數 - 使用了不同形式的IL(initobj
指令IIRC)。另一方面,如果一個結構體沒有構造函數,則表明它不是非常有用或者是可變的 - 而且可變結構體可能會導致各種問題。如果你自己在控制結構代碼,我會建議給它一個構造函數並使其不可變。有可能的情況下,可變結構是一個必要的邪惡(特別是在互操作性),但如果可能的話,他們是值得避免的。
5
您是否嘗試過使用:
Object o = Activator.CreateInstance(Type t);
...或一些其他重載?
http://msdn.microsoft.com/en-us/library/system.activator.createinstance%28v=VS.100%29.aspx
相關問題
- 1. C++,結構初始化多個實例
- 2. 何時顯式實例化結構?
- 3. 實例化新結構時使用`|'
- 4. 如何僅在運行時(即運行JUnits時)實例化redis實例
- 5. 在運行時使用內部構造函數實例化類
- 6. 如何在運行時在C#中實例化一個類
- 7. 在運行時C結構內省
- 8. 實例化結構時出現分段錯誤 - C++
- 9. GO運行時類型結構的新實例
- 10. 從C++傳遞一個結構爲C#當結構運行時
- 11. 結構圖:在運行時
- 12. 如何在C#中實例化堆中的結構
- 13. C編程結構運行時錯誤
- 14. 運行時使用模板參數實例化類(C++)?
- 15. 實例化結構模板的問題
- 16. 實例化對象 - 新VS結構
- 17. 實例化結構與提升multi_array
- 18. c#(wcf)體系結構文件和目錄結構(和實例化)
- 19. 在運行時創建類的實例,同時初始化
- 20. 在運行時選擇實例行爲
- 21. 如何在Go中運行時從其類型創建結構的新實例?
- 22. 結構圖 - 如何獲得命名實例並在運行時傳遞參數?
- 23. C++實例化
- 24. 實例化C#
- 25. 結構的實例
- 26. 初始化作爲複雜類/結構實例的常量(C++)
- 27. C++實例化2D矢量內部結構具有默認值
- 28. 創建結構實例數組[C]
- 29. C中結構的實例嗎?
- 30. 如何在運行時在Android中實例化ImageView?
謝謝。我聽說有時會產生混淆的可變結構,但從來不知道何時以及爲什麼出現這樣的問題。猜猜它的時間來找出答案。 – 2010-09-20 12:56:46
@ L.E.O .:這就像獲取一個值,然後在該值內改變一個字段,並且它不會反映到您從中獲取它的原始位置。各種奇怪的效果,基本上。 – 2010-09-20 12:58:02