我正在使用c#結構作爲僞聯合(通過使用LayoutKind.Explicit屬性)來傳遞我的程序周圍的網絡消息。我知道如何使用基本類型的佈局,因爲它們的大小已知。包含數組的struct的大小
但是,我會如何做到這一點與字符數組的字段之一?我知道一個字符是2個字節的數據(當在unicode格式),但是char []有多大?我相信這是一個參考類型,所以它的大小不僅僅是項目的數量* 2嗎?
我將如何佈局這個結構?它甚至有可能嗎?
我正在使用c#結構作爲僞聯合(通過使用LayoutKind.Explicit屬性)來傳遞我的程序周圍的網絡消息。我知道如何使用基本類型的佈局,因爲它們的大小已知。包含數組的struct的大小
但是,我會如何做到這一點與字符數組的字段之一?我知道一個字符是2個字節的數據(當在unicode格式),但是char []有多大?我相信這是一個參考類型,所以它的大小不僅僅是項目的數量* 2嗎?
我將如何佈局這個結構?它甚至有可能嗎?
大小是參考的寬度;所以x86上有4個字節或x64上有8個字節。 數組的大小是無關緊要的,因爲數組單獨存儲在堆上。如果要將序列化爲那個數據到一個字節流,那麼它可能取決於你使用哪個編碼用於char
數據。 UTF16確實是2 *個字符,但UTF8或UTF32會有所不同。
這很奇怪,它不應該等於長度乘以每個字符的字節數嗎?
每字節的字節數是2,因爲.NET'char'顯式地是UTF-16 –
非常感謝,這證實了我的想法。參考大小取決於編譯的設置,而不是它運行的系統,是正確的?所以32位程序集有4字節的參考大小,即使在64位操作系統上運行? – Venatu
@Venatu運行時,而不是編譯時。所以它依賴於操作系統。你CDN的目標特定的CPU來幫助選擇運行時(如果可能的話),儘管 –