類和結構的區別?

作者: Clark Zheng  來源: 博客園  發布時間: 2008-09-10 19:40  閱讀: 6881 次  推薦: 1   原文鏈接   [收藏]  

系列文章導航:

靜態成員和非靜態成員的區別?

const 和 static readonly 區別?

extern 是什么意思?

abstract 是什么意思?

internal 修飾符起什么作用?

sealed 修飾符是干什么的?

override 和 overload 的區別?

什么是索引指示器?

new 修飾符是起什么作用?

this 關鍵字的含義?

可以使用抽象函數重寫基類中的虛函數嗎?

C#基礎概念之密封類,屬性訪問器,接口

類和結構的區別?

C#基礎概念之抽象類,接口,接口多繼承

別名指示符是什么?

如何手工釋放資源?

C#基礎概念之P/Invoke,StringBuilder 和 String

explicit 和 implicit 的含義?

params 有什么用?

什么是反射?

 

16.類和結構的區別?
答:

 

類:
類是引用類型在堆上分配,類的實例進行賦值只是復制了引用,都指向同一段實際對象分配的內存
類有構造和析構函數
類可以繼承和被繼承

結構:
結構是值類型在棧上分配(雖然棧的訪問速度比較堆要快,但棧的資源有限放),結構的賦值將分配產生一個新的對象。
結構沒有構造函數,但可以添加。結構沒有析構函數
結構不可以繼承自另一個結構或被繼承,但和類一樣可以繼承自接口

示例:
根據以上比較,我們可以得出一些輕量級的對象最好使用結構,但數據量大或有復雜處理邏輯對象最好使用類。
如:Geoemtry(GIS 里的一個概論,在 OGC 標準里有定義) 最好使用類,而 Geometry 中點的成員最好使用結構

Code

 

 

結果:
X: 1, Y: 2, Z: 3
X: 4, Y: 5, Z: 6
X: 7, Y: 8, Z: 9
X: 7, Y: 8, Z: 9

1
0
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()