我可以知道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