我認爲LayoutKind.Sequential和LayoutKind.Explicit是清晰的,但是如何由C#處理LayoutKind.Auto?StructLayout.Auto與sequential和Explicit相比,意味着什麼?
1
A
回答
0
1
的documentation似乎非常清楚:
運行時會自動選擇合適的佈局在非託管內存對象的 成員。使用此 枚舉成員定義的對象不能在託管代碼之外公開。 試圖這樣做會產生一個異常。
換句話說,佈局是動態的,意味着您的對象不能再在託管代碼之外使用。
1
女士說here
公共語言運行時默認使用的自動佈局值。到 減少與自動值相關的佈局相關問題,C#, Visual Basic和C++編譯器指定值爲 類型的順序佈局。
4
LayoutKind.Auto
只是意味着,「我給予CLR許可重新排序對應於這些字段的字節」。它決定如何重組內存使用,打包等領域。 它會做出的變化並不是由文檔指定的,可能是因爲它的實現細節與您編寫結構的方式無關。
如果您傳遞給非託管代碼,這總是一件壞事,因爲非託管代碼期望這些字段處於特定順序。他們可能的重組肯定會產生意想不到的後果。這就是爲什麼你不能將LayoutKind.Auto
結構暴露給非託管代碼。
相關問題
- 1. 矩陣*向量與向量*矩陣相比意味着什麼
- 2. void **意味着什麼
- 3. PREEMPTIVE_XE_DISPATCHER這意味着什麼?
- 4. Field.Index.NOT_ANALYZED_NO_NORMS意味着什麼
- 5. HttpServletResponse.SC_BAD_REQUEST意味着什麼?
- 6. 什麼呢##意味着在$ {}
- 7. Solr意味着什麼?
- 8. 溢出意味着什麼?
- 9. 什麼===在PHP意味着
- 10. * | *這意味着什麼CSS?
- 11. 什麼<?意味着
- 12. 什麼。意味着在PHP?
- 13. %是什麼〜DP0意味着
- 14. 什麼-Dauto意味着
- 15. 什麼%*%意味着R中
- 16. AccountExpirationDate意味着什麼?
- 17. 這是&意味着什麼?
- 18. 什麼?意味着iOS的
- 19. $這意味着什麼PHP?
- 20. 什麼呢JDBC:HSQLDB:hsqlTempFiles意味着
- 21. 奎因意味着什麼?
- 22. malloc意味着什麼(int *)?
- 23. MYSQLI_NUM意味着什麼?
- 24. makefile中的$ <和$ @意味着什麼?
- 25. TE和NT究竟意味着什麼
- 26. TZOFFSETFROM和TZOFFSETTO意味着什麼
- 27. 好奇CR和LF意味着什麼
- 28. 什麼n_estimators和max_features意味着RandomForestRegressor
- 29. 什麼?和:意味着在C + +?
- 30. 是什麼[和]意味着C++
什麼在[documentation](http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.layoutkind.aspx)你不明白? – Oded 2012-02-08 15:38:35
@Oded文檔沒有詳細說明「Auto」如何工作的內部工作方式,我認爲這是OP的主要內容。我不認爲這個問題值得它得到的降價。 – 2012-02-08 15:46:48
@JohnFeminella - 問題是因爲它不清楚而陷入低估。 OP沒有具體說明他不明白的地方 - 你的猜測和任何一樣。 – Oded 2012-02-08 15:47:57