#やりたいこと
以下のように定義した構造体の中の配列サイズ(長さではない)取得をしたいです。
C#
1public struct Master_Dataframe_struct 2{ 3 public Struct_Header Header; 4 public Int16[] learn_buffer; 5}
#現状
サイズ取得方法にMarshal.SizeOfを使ってみたのですが、アンマネージ構造体だからマーシャリングできません?エラーがでてしまいました。
new Int16[10];と定義しているのにそういう話ではない?
C#
1 2 Master_Dataframe_struct st_Pc_dataframe = new Master_Dataframe_struct(); 3private void Transfer_motor_learn_Click(object sender, EventArgs e) 4{ 5 st_Pc_dataframe.learn_buffer = new Int16[10]; 6 Int32 size = Marshal.SizeOf(st_Pc_dataframe.Payload.st_learn.learn_buffer); 7}
#質問
構造体の中の配列サイズ(長さではない)取得をしたい場合のお勧めの方法ありましたらご教示いただけますでしょうか、よろしくお願いいたします。
C# の構造体は C の構造体とは違います。
C の構造体に変換するのであれば、その変換方法を属性で示してください。
構造体の中に配列を埋め込むのであれば、UnmanagedType.ByValArray を使います。
https://docs.microsoft.com/ja-jp/dotnet/api/system.runtime.interopservices.unmanagedtype?view=net-5.0#System_Runtime_InteropServices_UnmanagedType_ByValArray