靜態成員和非靜態成員的區別?
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 中點的成員最好使用結構
using system;
using system.collections.generic;
using system.text;
namespace example16
double y
double z
}//結構也可以從介面繼承
struct point: ipoint
public double x
set
}public double y
set
}public double z
set }}
//在此簡化了點狀geometry的設計,實際產品中還包含project(座標變換)等複雜操作
class pointgeometry
public pointgeometry(point value)
public double x
set
}public double y
set
}public double z
set
}public static pointgeometry operator +(pointgeometry left, pointgeometry rigth)
public override string tostring()
, y: , z: ", value.x, value.y, value.z);}}
class program
}}
結果:
x: 1, y: 2, z: 3
x: 4, y: 5, z: 6
x: 7, y: 8, z: 9
x: 7, y: 8, z: 9
類和結構的區別?
類 類是引用型別在堆上分配,類的例項進行賦值只是複製了引用,都指向同一段實際物件分配的記憶體 類有構造和析構函式 類可以繼承和被繼承 結構 結構是值型別在棧上分配 雖然棧的訪問速度比較堆要快,但棧的資源有限放 結構的賦值將分配產生乙個新的物件。結構沒有建構函式,但可以新增。結構沒有析構函式 結構不可...
類和結構的區別
結構在以下幾個重要方面與類不同 結構是值型別 參見11.3.1小節 所有結構型別都隱式地繼承自類system.valuetype 參見11.3.2小節 對結構型別的變數進行賦值,將建立所賦的值的乙個 副本 參見11.3.3小節 結構的預設值的生成方式為 將所有值型別的域設定為它們的預設值,並將所有引...
結構和類的區別
類是引用型別,是儲存在託管堆中的。通過定義類,我們可以在資料的生存期上得到很高的靈活性,但是也會讓程式的效能有一定的損失。雖然這種損失很小,但當我們只需要定義乙個很小的結構時,用類來定義就有些浪費,對於這樣的問題,c 有相對應的方案來解決,那就是 結構 struct 結構與類的區別 1 結構是值型別...