C 列舉 結構

2021-09-28 21:47:48 字數 2170 閱讀 9201

列舉是值型別

宣告列舉

宣告列舉使用enum關鍵字.

使用列舉

還可以用可空修飾符?建立可空列舉型別。

season? a =

null

;

選擇列舉字面值

列舉內部的每個元素都關聯乙個整數值。預設第乙個元素對應整數字0,以後每個元素對應的整數都遞增1.

可將特定整數常量和列舉型別的字面值手動關聯起來,比如

後面的summer,fall,winter依次遞增1,所以就是1,2,3,4.

選擇列舉的基礎型別

宣告列舉時,列舉字面值預設是int型別.

也可以修改列舉的基礎型別,比如:

這樣做可以節省記憶體。列舉可以基於8中整型的任何一種:

byte,sbyte,short,ushort,int,uint,long,ulong.

比如byte,最多就只能容納256個字面值.

如果你學過c或者c++,對結構應該不陌生.在c#語言中,int,long和float分別是system.int32,system.int64和system.single這三個結構的別名。

類定義的是引用型別,總是在堆上建立。有時類只包含極少數據,因為管理堆而產生的開銷不合算。這時最好的方法是使用結構。結構是值型別,在棧上儲存,能有效減少記憶體管理的開銷。

結構可包含字段、方法和構造器(但不能主動宣告預設構造器).

宣告結構

宣告結構以struct關鍵字開頭。

比如

大多數時候不要在結構中宣告公共字段,更好的做法是使用私有字段,並使用構造器和方法來初始化和處理欄位.

複製值型別的變數將獲得值的兩個拷貝。複製引用型別的變數,將獲得對同乙個物件的兩個引用。簡單的、比較小的資料,複製值的效率基本等同於複製位址的效率,就使用結構。

如果較複雜的資料就要考慮使用類。

…結構和類的區別

不能為結構宣告預設構造器。因為編譯器始終都會自動生成乙個。而在類中,只有在自己沒有寫構造器的時,編譯器才會自動生成乙個預設的.

如果不想使用預設構造器,可以提供乙個非預設的構造器,用它將字段初始化成不同的值.然而,自己寫的構造器必須顯式地初始化所有字段。

類的例項欄位可在宣告時初始化,但結構不允許。

和列舉一樣,可用?修飾符建立可空結構.

結構的初始化

time now =

newtime()

;

由於結構是值型別,不呼叫構造器也可以建立結構變數

time now;
雖然變數已經建立了,但其中的字段未初始化,試圖訪問這些欄位會造成編譯時錯誤.

複製結構變數

可將結構變數初始化或賦值為另乙個結構變數,前提是賦值操作符=右側的結構變數已完全初始化。

c 列舉,結構

今天我們來學習一下c 中的列舉和結構。有一些固定的範圍的值就可以用列舉,例如方向,性別等。列舉的宣告 在命名空間下面,類上面 public enum 規範,方便 public enum gender public 訪問修飾符 public enum fangxiang 列舉 我想顯示出乙個人的性別,...

C 列舉和結構

列舉 enum 描述 1 不指定型別預設為int型 2 預設值為從0開始 3 賦值過程 使用 運算子 格式1 enum 3 n 格式2 enum 3 3 n 結構 struct 描述 部分 包含變數宣告 格式 struct 例 列舉 enum orientation byte north 1 sou...

C 列舉 結構 陣列

列舉what?列舉是由一組特定常量構成的一組資料結構,是值型別的一種特殊形式,當需要乙個由指定常量集合組成的資料型別時,使用列舉型別。列舉宣告可以顯式地宣告 byte sbyte short ushort int uint long 或 ulong 型別作為對應的基礎型別。沒有顯式地宣告基礎型別的列...