舉例來說:
1.
[StructLayout(LayoutKind.Sequential)]
public struct Msg_List
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
public string Message; //訊息.
};
2.
[StructLayout(LayoutKind.Sequential)]
public struct Msg_List
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
public char[] Message; //訊息.
};
public struct Msg_List
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
public char[] Message; //訊息.
};
資料由指標傳遞,再將此指標轉換成msg時
(Msg_List)Marshal.PtrToStructure(ptrM, typeof(Msg_List));
用第一種struct會比第二種struct來的好
原因是使用第二種struct有可能會漏訊息,一樣會收到資料,但char Message的內容會是空的
至於為什麼,我也不知道,或許是unity的原因也或許是C#語法的關係,就沒有追究下去了...