[英]simple question about Enums
internal enum eCoinType
{
g = 0,
h = 1,
s = 2
}
我在相同的代码中看到过这一行:
eCoinType coin = new eCoinType();
这是什么意思?
Enum的“新”声明有什么作用? 谢谢
它创建一个默认值为0的eCoinType
实例,它对应于eCoinType.g
。 默认构造函数是System.Enum
类的构造函数。
请注意,虽然使用了关键字new
,但您仍然可以创建值类型的项,因为枚举是值类型,而不是引用类型。 它与使用new
创建struct实例类似。
只是为了添加@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有一个用例(通过使用在不同的插件模块中声明的枚举修改应用程序逻辑?)但是这与Visual Basic中的Shadows overloading关键字一样多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.