類和結構的區別?

2021-09-08 14:21:37 字數 1862 閱讀 3848

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

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 結構是值型別...