我正在構建一個應用程序,我需要處理圖中的位置。這個位置具有X,Y的價值以及像北,東,南和向東的方向。我認爲這個位置可能是Struct
,因爲它代表該圖中的單個值。如何知道我的對象在C#中有多少個字節?
我研究和思考Structs
並找到這些規則,以便使用Struct
:
- 它在邏輯上表示單個值,類似於原始類型 (整數,雙,等)。
- 它的實例大小小於16個字節。
- 它是不可變的。
- 它不會經常被裝箱。
這裏是我未完成的Struct
一個例子:
public struct Position
{
public long PositionX { get; set; }
public long PositionY { get; set; }
public CompassPoint CompassPoint { get; set; }
}
public enum CompassPoint : byte
{
North,
East,
South,
West
}
我想知道如何計算我Struct
的字節大小,我怎麼會知道這是否是一成不變的?
謝謝。
更新:
好。據答覆,我的Struct
似乎通過了16個字節,因爲只有兩個long
有16個字節+ 1個字節的CompassPoint
。
但是一個額外的問題是:我得到什麼使用Struct
16字節和不可變?並看看DateTime
Struct
,它似乎有更多的16個字節?任何問題?
不是每個長8個字節,聽起來你會有超過16個字節在這裏,如果你真的有兩個多頭和其他東西。 – Hogan
它是可變的,因爲你有公共'set'訪問器。不可變意味着創建後不能更改屬性。 – Blorgbeard
'DateTime'結構只有8個字節。 「Kind」和「Ticks」屬性是其中唯一的實際數據,並且它們一起存儲在「long」中。關於16字節推薦:http://stackoverflow.com/questions/2437925/why-is-struct-better-with-being-less-than-16-bytes/2437938#2437938 – Guffa