我可以知道C#和C中enum
關鍵字之間的區別嗎?C#中的enum關鍵字和C有什麼區別?
我試圖在C#中使用c風格的enum
變量,但是我得到錯誤。當我搜索谷歌它說,如果我們有枚舉天{週六,週日,週一,週二,週三,週四,週五};那麼我們需要在C#中使用Days.Sat而不是像C中那樣直接使用Sat。爲什麼會這樣呢?
我可以知道C#和C中enum
關鍵字之間的區別嗎?C#中的enum關鍵字和C有什麼區別?
我試圖在C#中使用c風格的enum
變量,但是我得到錯誤。當我搜索谷歌它說,如果我們有枚舉天{週六,週日,週一,週二,週三,週四,週五};那麼我們需要在C#中使用Days.Sat而不是像C中那樣直接使用Sat。爲什麼會這樣呢?
因爲C#的設計者認爲最好是將枚舉值包含在自己的「名稱空間」中,而不是將它們全部引用到父名稱空間中。許多人認爲這是C/C++中的一個煩惱。
順便說一句,在C++ 11有「強類型枚舉」現在,具有語法非常相似的C#:
enum class Day
{
Mon,
Tue,
};
Day myDay = Day::Mon;
只是:因爲這是指定兩種不同語言的方式。在C中,名稱的範圍是聲明級別,在C#中名稱從屬於枚舉類型。後一種方法有助於避免歧義都與衝突:
Sat
意味着「一週中的一天」?爲什麼不是「身體位置」?或「招生考試」?但「爲什麼會這樣呢?」很簡單:,因爲這是每種語言設計的方式。
在C#中,枚舉和屬性是語言的第一級成員,完全受底層引擎支持,事件和委託(類型安全函數指針)也是如此。 在C#中,枚舉被交易爲類,但有一些例外,這意味着它可以在名稱空間或類級別聲明;它不能像在C++中那樣在方法中的語句塊中定義。如果嘗試,Visual Studio不會發布與枚舉定義本身有關的錯誤,而是在方法的開頭大括號中聲明'} expected',而不是像'enum不能在語句級別定義'那樣有用的東西,甚至'無效語句」。另一個不直觀的錯誤信息是由Microsoft提供的。
我有這個信息,形成以下鏈接:
http://suncat-csharp.blogspot.de/2010/11/differences-between-enum-in-c-and-cc.html
http://channel9.msdn.com/Forums/TechOff/446478-Enum-C-vs-C
我希望這將有助於你理解的差異。很多其他的小東西我會在晚些時候給你的!
在C和C++,枚舉定義了表示限制值類型一組值。 枚舉類型可以在使用之前的任何地方聲明,包括語句塊。
在C#中,枚舉定義了一個類(即類型是類),這意味着它只能在名稱空間或類級別聲明;它不能在方法中的語句塊中定義,因爲它可以在C++中使用。
請到通過這個環節,
http://cplus.about.com/od/introductiontoprogramming/p/enumeration.htm
http://en.wikipedia.org/wiki/Enumerated_type#C.23閱讀 – wudzik