實值型別的欄位應該是可移植的
更新:2007 年 11 月
型別名稱 |
ValueTypeFieldsShouldBePortable |
CheckId |
CA1900 |
分類 |
Microsoft.Portability |
中斷變更 |
中斷 - 如果可以在組件 (Assembly) 外部看見欄位。非中斷:如果不能在組件外部看見欄位。 |
原因
在 64 位元的平台上封送處理 Unmanaged 程式碼時,此規則會檢查宣告為明確配置的結構是否會正確地配置。IA-64 不允許存取未配置的記憶體,而且如果無法修正此項違規,則此處理序 (Process) 會造成當機。
規則描述
包含明確配置不當欄位的結構會造成 64 位元平台當機。
如何修正違規
小於 8 位元組的所有欄位必須具有是其大小之倍數的位移 (Offset),而欄位大小需為 8 位元組或以上,且必須具有 8 之倍數的位移。另一個方案是在合理的情況下,使用 LayoutKind.Sequential 取代 LayoutKind.Explicit。
隱藏警告的時機
這則警告只有在發生錯誤時才能隱藏。