2015年4月17日 星期五

string vs. char

C# 中在處理字串問題時,建議盡量用string宣告,少用char,尤其當你用來接收資料時

舉例來說:
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; //訊息.
};


資料由指標傳遞,再將此指標轉換成msg時
(Msg_List)Marshal.PtrToStructure(ptrM, typeof(Msg_List));

用第一種struct會比第二種struct來的好

原因是使用第二種struct有可能會漏訊息,一樣會收到資料,但char Message的內容會是空的

至於為什麼,我也不知道,或許是unity的原因也或許是C#語法的關係,就沒有追究下去了...