我有以下聲明: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