covers:列舉和結構體
列舉是一種有限集合。生活中的有限集合很多,比如「一周中每天的名稱」只有 7 種、「生日對應的星座」只有 12 種(現在好像是 13 種了?),這些事物都適合用列舉來描述。
寫乙個列舉的例子:
using system;
namespace enums
class
program
}}
我們用關鍵字enum
定義列舉型別weekday,它有 7 種取值,對應一周中每天的名稱;我們在 main 中建立了乙個列舉變數 today 並初始化(注意列舉項前也需要加上列舉型別名),並進行了兩種列印嘗試:
直接列印這個列舉量
將列舉量強轉成 int 型後再列印
控制台輸出:
sat = 6
可見,在實現上,列舉是具名的整型量,它可以直接強轉為列舉項對應的整數(預設情況下,各列舉量按順序從 0 開始遞增,也可以手動指定),當其被直接列印時,則列印列舉項的名稱。
所有對 c/c++ 程式設計有些許經驗的人都知道結構體是什麼,不知道也不要緊,結構體就是將資料和函式打個包,聽起來好像跟類的概念基本一樣?沒錯,在 c++ 中 結構體和類幾乎沒有區別,值得注意的區別只有預設訪問許可權的不同。結構體是實至名歸的物件導向的始祖,從 c 開始就有人利用結構體實現一些基本的物件導向概念了,只是 c 的結構體不能直接包含函式(但可以包含函式指標)。
我們看乙個簡單的 c# 結構體,注意其定義語法:
struct person
()", name, age);}
}class
program
;++me.age;
me.printinfo()
;}}
我們用struct
關鍵字定義結構體person,它「打包」了兩個變數 name 和 age,都是內建型別,稱為字段,設定為 public 許可權;又「打包」了乙個方法 printinfo,也是 public 許可權(注意該方法不需要用 static 修飾);我們在 main 中建立了乙個結構體物件 me 並初始化;最後用點號訪問了 me 的 age 欄位和 printinfo 方法。
c# 中,結構體和類有顯著的區別:
**如何在類和結構體之間取捨:**結構體的記憶體效率比類高很多,因此當你希望創造一種行為簡單、內容少、快速的「類」(例如在乙個迴圈中要反覆建立、處理和丟棄大量簡單物件)時,使用結構體最好;當你需要更高階的物件導向特性(雖然我們還沒學)時,或者類中的資料很多、要頻繁在方法之間傳遞時,用類最好。
你可以將結構體理解為「最接近內建型別」的自定義型別,它非常簡單而「純粹」,在其中編寫的方法也要盡可能簡單明瞭。寫程式的原則是化繁為簡,當能夠用簡單的結構解決問題時,就不要用複雜的類。
t.b.c.
C 程式語言(六) 列舉型別與結構型別
列舉型別 列舉型別 也稱為列舉 為定義一組可以賦給變數的命名整數常量提供了一種有效的方法。例如,假設您必須定義乙個變數,該變數的值表示一周中的一天。該變數只能儲存七個有意義的值。若要定義這些值,可以使用列舉型別。列舉型別是使用 enum 關鍵字宣告的。enum days 如果未在列舉數列表中指定元素...
C 基礎 六) 列舉的一些常用操作
本章將介紹以下幾點 1 如何把其它型別轉換為列舉型別?2 如何把列舉中的值新增到下拉列表中?一 如何把其它型別轉換為列舉型別?我們回顧一下有關字串與數字之間的轉換,如 stringstrvalue 12 intvalue int.parse strvalue 使用int.parse 就可以把字串轉換...
藍橋杯省賽備戰筆記 (六)列舉 列舉練習題
列舉就是根據提出的問題,一 列出該問題的所有 可能的解,並在逐一 列出的過程中,檢驗每個可能解是否是問題的真正解,如果是就採納這個解,如果不是就繼續判斷下乙個。列舉法 般比較直觀,容易理解,但由於要檢查所有的可能解,因此執行效率較低。例題 寒假作業 在這篇部落格裡解決過,有兩種方法 例題 方程的解 ...