列舉是值型別
宣告列舉
宣告列舉使用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 型別作為對應的基礎型別。沒有顯式地宣告基礎型別的列...