結構和類的區別

2021-10-02 21:04:33 字數 2206 閱讀 8686

結構和類非常相似,今天就來總結下結構和類有什麼區別

1.首先就是語法上的區別,關鍵字的不同(class和struct)

類的語法:

class

student

}

結構的語法:

struct recatangle

}

2.賦值的不同:

類賦初始值:是可以直接賦值的

class

student

}

結構賦初始值:不可以直接賦值 會提示結構中不能例項屬性或字段初始值設定項

struct recatangle

}

既然結構不能直接在字段上面賦值,那麼它怎麼賦值呢?還有乙個東西那就是 建構函式了

回想一下什麼是建構函式, 關於隱式建構函式.在1個類中如果我們沒有為類寫任意的建構函式,那麼c#編譯器在編譯的時候會自動的為這個類生成1個無引數的建構函式.我們將這個建構函式稱之為隱式建構函式 但是一旦我們為這個類寫了任意的1個建構函式的時候,這個隱式的建構函式就不會自動生成了.。

標重點:結構是是在什麼情況下都有隱式建構函式的,所以手動寫建構函式必須是帶引數的建構函式,而且必須要為結構體的所有字段賦值,不能寫無參的建構函式。

3.建構函式的不同:

類:如果不手動寫建構函式的話會自動生成隱式建構函式,如果一旦自己手動寫建構函式的話,隱式的建構函式就沒有了,類的構造函式引數沒有要求。

結構的建構函式:,必須要為結構體的所有字段賦值

結構的建構函式**:

struct recatangle

}

4.建立物件的區別:

結構體建立物件:

1).不需要new直接宣告乙個變數就可以,但是這種方法沒有呼叫建構函式,所以在呼叫之前需要程式設計師自己賦值

**:

namespace structure_結構_

struct recatangle

}class

program

static

intlengthss

(recatangle re)

}}

2).和類一樣,使用new關鍵字來建立,與不使用new關鍵字建立不同的是,通過使用new關鍵字建立結構體物件後,new關鍵字呼叫了建構函式,而結構體建構函式要求必須要為所有的字段賦值.

namespace structure_結構_

struct recatangle

}class

program

static

intlengthss

(recatangle re)

}}

加乙個小知識點:從上面我們可以看出來建構函式的意義,那麼在結構中的方法,在呼叫上又有什麼不同

呼叫機構中的方法:

1.1)在new之後可以直接呼叫

namespace structure_結構_

struct recatangle

public

intarea()

}class

program

static

intlengthss

(recatangle re)

}}

1.2)在不new的情況下,需要賦值之後才可以呼叫結構中的方法

**:

namespace structure_結構_

struct recatangle

public

intarea()

}class

program

}}

5.型別的區別:

結構體是值型別,

類是引用型別

哪什麼時候用到結構,什麼時候用到類呢?(個人觀點)

結構是乙個資料的集合體,所以在需要運算的時候用到結構,例如按鈕的座標

另外也會使用結構. 我們在變數傳值的時候,我就是希望傳遞物件的拷貝,而不是物件的引用位址,那麼這個時候也可以使用結構了.

類用在只是儲存但不做運算的時候

總結到現在基本上就結束了,下面統計了一張表,來區分結構和類的區別

結構和類的區別:

類和結構的區別?

類 類是引用型別在堆上分配,類的例項進行賦值只是複製了引用,都指向同一段實際物件分配的記憶體 類有構造和析構函式 類可以繼承和被繼承 結構 結構是值型別在棧上分配 雖然棧的訪問速度比較堆要快,但棧的資源有限放 結構的賦值將分配產生乙個新的物件。結構沒有建構函式,但可以新增。結構沒有析構函式 結構不可...

類和結構的區別

結構在以下幾個重要方面與類不同 結構是值型別 參見11.3.1小節 所有結構型別都隱式地繼承自類system.valuetype 參見11.3.2小節 對結構型別的變數進行賦值,將建立所賦的值的乙個 副本 參見11.3.3小節 結構的預設值的生成方式為 將所有值型別的域設定為它們的預設值,並將所有引...

結構和類的區別

類是引用型別,是儲存在託管堆中的。通過定義類,我們可以在資料的生存期上得到很高的靈活性,但是也會讓程式的效能有一定的損失。雖然這種損失很小,但當我們只需要定義乙個很小的結構時,用類來定義就有些浪費,對於這樣的問題,c 有相對應的方案來解決,那就是 結構 struct 結構與類的區別 1 結構是值型別...