internal enum eCoinType
{
g = 0,
h = 1,
s = 2
}
我已经看到了这条线在同一代码:约枚举简单的问题
eCoinType coin = new eCoinType();
是什么意思?
Enum中的“新”声明有什么作用? 谢谢
internal enum eCoinType
{
g = 0,
h = 1,
s = 2
}
我已经看到了这条线在同一代码:约枚举简单的问题
eCoinType coin = new eCoinType();
是什么意思?
Enum中的“新”声明有什么作用? 谢谢
它创建一个eCoinType
实例,默认值为0,对应于eCoinType.g
。默认的构造函数是System.Enum
class。
请注意,尽管使用了关键字new
,但您仍然创建值类型的项,因为枚举是值类型,而不是引用类型。这与使用new
创建结构实例相似。
只要添加到@BoltClock所说的内容,它将创建一个eCoinType
,其默认值为0,如果是数字类型,则为enum
。所以它会等于:
// These all mean the same thing
eCoinType coin = eCoinType.g; // <-- This one is preferred, though
eCoinType coin = new eCoinType();
eCoinType coin = default(eCointType);
eCoinType coin = (eCoinType)0;
这是一种坏态度。我让程序员使用这个默认构造函数来枚举枚举的第一个值,而程序员实际上需要枚举的第一个值。请注意,有些人为现有枚举添加了值,而不关心顺序,如果他们将新值置于顶部,则会在代码中发现未定义的行为。
eCoinType cointype = new eCoinType();
在这种情况下等于
eCoinType cointype = eCoinType.g;
但是,如果你修改eCoinType和g之前放的东西,你已经改变了应用程序逻辑。
Mybe存在对于一个用例(通过使用在不同的插件模块?声明枚举修改应用程序逻辑),但是尽可能多abscure如阴影在Visual Basic :)
另外'eCoinType硬币=超载关键字默认(eCoinType)'。 – BoltClock 2011-03-25 00:00:04
啊,好点,这是另一个好的。 – 2011-03-25 00:00:51