在C中結構可以實現介面,結構不能用於繼承,結構中的欄位能否賦值

2022-12-25 01:48:18 字數 1591 閱讀 1239

1樓:小羊說程式設計

如下例子:這個是錯的 結構中不能有例項欄位初始值public struct cat

如下例子:這個是對的

public struct cat

2樓:匿名使用者

結構中的欄位不能賦值那結構還有什麼用?結構可以看成一種簡單的類。

在c#中結構為什麼不能繼承?

3樓:

在面嚮物件語言出現之前的語言都是程序導向的,是沒有類的,只有結構(結構是由一系列具有相同型別或不同型別的資料構成的資料集合),那個時候連類都沒有,更不用說繼承了。有人說struct相當於是一個輕型類。

4樓:酷我一代

因為結構和類的型別不一樣,在記憶體中儲存方式不一樣。

c#中我繼承介面的那個結構出現不能實現介面成員

5樓:匿名使用者

ccolor是大寫的,介面裡是小寫的。低階問題往往讓你困惑幾個月了吧。

c#中結構中構造方法定義的問題 25

6樓:匿名使用者

c#中的結構體型別

struct 型別是一種值型別,通常用來封裝小型相關變數組,例如,矩形的座標或庫存商品的特徵。下面的示例顯示了一個簡單的結構宣告。

public struct postaladdress

結構與類共享幾乎所有相同的語法,但結構比類受到的限制更多:

儘管結構的靜態欄位可以初始化,結構例項欄位宣告還是不能使用初始值設定項。

結構不能宣告預設建構函式(沒有引數的建構函式)或解構函式。

結構的副本由編譯器自動建立和銷燬,因此不需要使用預設建構函式和解構函式。實際上,編譯器通過為所有欄位賦予預設值(參見預設值表)來實現預設建構函式。結構不能從類或其他結構繼承。

結構是值型別 -- 如果從結構建立一個物件並將該物件賦給某個變數,變數則包含結構的全部值。複製包含結構的變數時,將複製所有資料,對新副本所做的任何修改都不會改變舊副本的資料。由於結構不使用引用,因此結構沒有標識 -- 具有相同資料的兩個值型別例項是無法區分的。

c# 中的所有值型別本質上都繼承自 valuetype,後者繼承自 object。

編譯器可以在一個稱為裝箱的過程中將值型別轉換為引用型別。

結構具有以下特點:

結構是值型別,而類是引用型別

向方法傳遞結構時.結構是通過傳值方式傳遞的,不是作為引用方式傳遞.

與類不同,結構的例項化可以不使用new運算子.

結構可以宣告建構函式,但他們必須帶引數

一個結構不能從另一個結構或類繼承,而且不能作為一個類的基。所有結構都直接繼承自 system.valuetype,後者繼承自 system.object。

結構可以實現介面。

在結構中初始化例項欄位是錯誤的。

7樓:匿名使用者

class的get,set的可以是類,

public people getproperties}struct的get,set只能對值型別!

public int getproperties}

c 中new結構體的問題,c 中new一個結構體的問題。

這是個引數匹配的問題。你的test函式的引數是一個指標陣列,陣列的每個元素是指向stu結構體的指標,而你在呼叫test函式時,你傳進去的引數一個指向結構體陣列的指標,他們的型別不匹配,你只要將test函式的引數中的 去掉即可,即改為void test struct stu s 因為引數型別不匹配。將...

c 中結構體是什麼?有什麼用,c 中的結構體是用來幹嘛的 能解決什麼問題

在c語言中,可以定義結構體型別,將多個相關的變數包裝成為一個整體使用。在結構體中的變數,可以是相同 部分相同,或完全不同的資料型別。在c語言中,結構體不能包含函式。在物件導向的程式設計中,物件具有狀態 屬性 和行為,狀態儲存在成員變數中,行為通過成員方法 函式 來實現。c語言中的結構體只能描述一個物...

c結構體中如果含有其他結構體陣列怎麼初始化?求大神指教

將a suba new a 10 改為 a suba 10 即可.此處 a 代表型別,suba代表變數名 類似int arr 10 寫成 int 10 arr 明顯錯誤 c 中結構體如何定義?結構體的成員中含有陣列 struct b 程式呼叫時 採用 b ab ab.suba new a 10 的方...