CA1900: 値型フィールドはポータブルでなければなりません
Item | [値] |
---|---|
規則 ID | CA1900 |
カテゴリ | Microsoft.Portability |
互換性に影響する変更点 | 中断あり - アセンブリの外部からフィールドを参照できる場合。 中断なし - アセンブリの外部からフィールドを参照できない場合。 |
原因
この規則では、明示的なレイアウトによって宣言された構造体が、64 ビット オペレーティング システムでアンマネージド コードにマーシャリングされるときに、適切にアラインされるかどうかを確認します。 IA-64 では、アラインされていないメモリ アクセスは許可されません。この違反が修正されない場合、プロセスはクラッシュします。
規則の説明
正しくアラインされていないフィールドを含んでいる、明示的なレイアウトを持つ構造体によって、64 ビット オペレーティング システムでクラッシュが発生します。
違反の修正方法
8 バイトより小さいすべてのフィールドには、そのサイズの倍数であるオフセットが必要です。また、8 バイト以上のフィールドには、8 の倍数であるオフセットが必要です。 もう 1 つの解決策は、LayoutKind.Explicit
の代わりに LayoutKind.Sequential
を使用することです (適切な場合)。
どのようなときに警告を抑制するか
この警告は、誤って発生した場合にのみ抑制する必要があります。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示