我有以下声明:C#显式初始化为枚举
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;
谢谢那些谁试图帮助。
'私有枚举_statusValue'是一个类型定义。您无法初始化类型定义。 – 2010-12-10 16:29:27
我不认为这是正确的。这不是一个字段的定义吗?它的工作方式类似于字段定义 - 我可以使用其他枚举为其分配一个值,并使用强制转换从其中检索值。 – RenniePet 2010-12-10 17:05:08
@RenniePet:你可以回答你自己的问题,然后接受它。这样就可以解决这个问题。 – dvdvorle 2011-07-11 06:14:13