ちょうど不思議なことに、構造体/値型のサイズをC#の急激な変更に変更していますか? structを変更すると配列/その他の構造体のサイズに直接影響するため、構造体はメモリレイアウトの面でより敏感です。それが使用するライブラリ内の構造体のレイアウトが変更された後、バイナリまたはソースのいずれかで壊れるコードの例はありますか?構造体のサイズをC#の急激な変更に変更していますか?
注:「ブレーク」とは、コンパイルに失敗したか、ILが無効になったことを意味します。たとえば、私はこれを壊滅的な変化とは考えていません。まだ実行されているので、これは改変とはみなされません。
// My.Library v1
public struct MyStruct {}
// My.Library v2
public struct MyStruct { int _field; }
// App code
using My.Library;
using System.Runtime.InteropServices;
Console.WriteLine(Marshal.SizeOf<MyStruct>()); // before printed 1, now prints 4
InteropServicesを使用してアンマネージコードと対話していますか?答えがイエスならば、それは急変です。いいえの場合、答えはより微妙です。 –
申し訳ありませんが、私はあなたの質問を理解していない...あなたはアセンブリを再コンパイルしたので、すべてがOKになるはずですか? –
ジッタは多くの罪を隠します。構造体サイズは、ビルド時には役割を果たさず、ランタイムのみです。初期化されていないフィールドを持つことは驚くかもしれません。 –