我有以下声明:
private Enum _statusValue;
我真正想说的是:
private Enum _statusValue = 0;
尽管我知道这是多余的。只是我喜欢明确指定初始化。
但这是不允许的。
是否有一些简单的方法来指定这种声明的初始化?
编辑 - 让我再试一次。
这是我正在做的一个人为的/简化的例子。
using System;
namespace EnumTesting
{
public enum EFixedPhoneUsability
{
UnknownValue, // Should not occur?
IsUsable, // User is near the telephone
NotUsable, // User not near the telephone
BeingUsed, // Busy
DoNotDisturb, // This is phone physical state, not user attitude
CallsForwarded // This is phone physical state
}
public enum EMobilePhoneConnectivity
{
UnknownValue, // Should not occur?
OnNetIdle, // I.e., usable
OnNetBusy, // Being used
NoConnection // Turned off, in elevator or tunnel or far from civilization
}
public class Program
{
public Enum StatusValue;
static void Main(string[] args)
{
Program p = new Program();
p.StatusValue = EMobilePhoneConnectivity.NoConnection;
int i = (int) (EMobilePhoneConnectivity) p.StatusValue;
p.StatusValue = EFixedPhoneUsability.DoNotDisturb;
i = (int) (EFixedPhoneUsability) p.StatusValue;
}
}
}
所以我的问题是,我可以在此声明中添加通用初始值设定项吗?
public Enum StatusValue;
第二次编辑:
没关系,我发现了我的方式错误,感谢这个帖子:
How to convert from System.Enum to base integer?
关键短语,让我意识到我做错了,是:“枚举是值类型(内部仅由整数常量表示),而System.Enum是引用类型”。
所以我不想这样说:
private Enum _statusValue = 0;
我想说这个,这完全有效:
private Enum _statusValue = null;
感谢那些试图提供帮助的人。
答案 0 :(得分:9)
您总是可以稍微区别地声明您的枚举并添加默认状态(实际上是suggested by Microsoft):
public enum MyEnum
{
Default = 0,
One = 1,
Two = 2
}
或者简单地说(自动编号从0开始):
public enum MyEnum
{
Default,
One,
Two
}
这将允许您执行以下操作:
private MyEnum _enum = MyEnum.Default;
答案 1 :(得分:2)
我的问题基本上是错误的。我错误地认为Enum(就像枚举)是一个值类型,但它实际上是一个引用类型。
所以我不想这样说:
private Enum _statusValue = 0;
我想说这个,这完全有效:
private Enum _statusValue = null;
感谢那些试图提供帮助的人。