我可以知道C#和C中的enum
关键字之间的区别是什么?
我尝试在C#中使用c风格的enum
变量,但是我收到了错误。当我搜索谷歌它说,如果我们有枚举天{星期六,星期日,星期一,星期二,星期三,星期四,星期五};那么我们需要在C#中使用Days.Sat而不是像C中那样直接使用Sat。为什么会这样?
答案 0 :(得分:5)
简单地说:因为这是指定两种不同语言的方式。在C中,名称的范围是声明级别,在C#中,名称从属于枚举类型。后一种方法有助于避免歧义和冲突:
Sat
是否意味着“一周中的哪一天”显而易见?为什么不是“身体姿势”?还是“招生考试”?但“为什么会这样?”简单地说:因为这是每种语言的设计方式。
答案 1 :(得分:3)
因为C#的设计者认为将枚举值包含在自己的“命名空间”中而不是将它们全部放入父命名空间中会更好。许多人认为这是C / C ++的烦恼 顺便说一句,在C ++ 11中,现在有“强类型枚举”,其语法与C#的语法非常相似:
enum class Day
{
Mon,
Tue,
};
Day myDay = Day::Mon;
答案 2 :(得分:1)
在C#中,枚举和属性是该语言的第一类成员,完全由底层引擎支持,事件和委托(类型安全函数指针)也是如此。 在C#中,枚举像一个类一样有一些例外,这意味着它可以在命名空间或类级别声明;它不能在C ++中的方法中的语句块中定义。如果你尝试,Visual Studio会发出一个错误而不是关于枚举定义本身,而是在方法的开头括号中,声明'} expected'而不是像'enum那样有用的东西不能在语句级别定义'或者甚至是'invalid statement ”。另一个不直观的错误消息是由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
我希望这能帮助你理解这些差异。还有很多其他小事我以后会对你说的!
答案 3 :(得分:1)
在C和C ++中,枚举定义了一个表示一组受限值的值类型。 枚举类型在使用之前几乎可以在任何地方声明,包括语句块。
在C#中,枚举定义了一个类(即类型是类),这意味着它只能在命名空间或类级别声明; 它不能在C ++中的方法中的语句块中定义。
请浏览此链接,
http://cplus.about.com/od/introductiontoprogramming/p/enumeration.htm