我是C#中的新成員。
我想了解爲什麼結構大小增長。
即:測試結構的
結構C的大小#
struct Test
{
float x;
int y;
char z;
}
大小實際上是10個字節(浮= 4,INT = 4,炭= 2)。
但是當我試圖用Marshal.SizeOf(..)
方法我得到了12
在C得到的sizeof結構++我沒有pragma pack(1)
,以防止這一點,但我怎樣才能做到這一點在C#中?
另一個問題是:
當我試圖測試結構轉換爲字節數組,如果該結構是不[Serialize]
我得到作爲例外字節數組大小12字節(或不),但如果結構是[Serialize]
我得到字節數組大小爲170字節,爲什麼它的發生?
謝謝! :)
*當我試圖測試結構轉換爲字節數組*您是如何試圖做到這一點? – xanatos
如果結構不是[序列化]我轉換是用這種方法http://stackoverflow.com/questions/3278827/how-to-convert-a-structure-to-a-byte-array-in-c(檢查答案),如果soi轉換它與http://stackoverflow.com/questions/628843/byte-for-byte-serialization-of-a-struct-in-c-sharp(最後一個答案) – Evyatar
請記住如果你使用Marshaller或序列化 - 你不測量結構的大小。您正在測量非託管等效項或序列化表單的大小。這兩者都不一定與結構本身的大小有關。 –