結構體(sturct)是一種值類型,而類(class)是引用類型。區別在於復制方式,值類型的數據是值賦值,引用類型的數據是引用復制。
結構體使用棧存儲(Stack Allocation),而類使用堆存儲(Heap Allocation)。
棧的空間相對較小.但是存儲在棧中的數據訪問效率相對較高。
堆的空間相對較大.但是存儲在堆中的數據的訪問效率相對較低
結構體使用完之后就自動解除內存分配,類實例有垃圾回收機制來保證內存的回收處理
如何選擇結構體還是類
1. 堆棧的空間有限,對於大量的邏輯的對象,創建類要比創建結構好一些
2. 結構體表示如點、矩形和顏色這樣的輕量對象,例如,如果聲明一個含有 1000 個點對象的數組,則將為引用每個對象分配附加的內存。在此情況下,結構體的成本較低。
3. 在表現抽象和多級別的對象層次時,類是最好的選擇,因為結構體不支持繼承
4. 大多數情況下該類型只是一些數據時,結構體時最佳的選擇