0
當您聲明具有基本類型uint的枚舉時,可以在您確切知道要轉換的項目時將其轉換爲int 。但是,當您有一個Dictionary並從中檢索其中一個枚舉項目時,您無法執行此演算。在聲明特定枚舉項時聲明枚舉,但在從字典中檢索時不起作用
爲什麼會發生這種情況?
例如:
枚舉:
public enum IncrementScheduleMask
{
Sunday = 0x01,
Monday = 0x02,
Tuesday = 0x04,
Wednesday = 0x08,
Thursday = 0x10,
Friday = 0x20,
Saturday = 0x40,
}
這將工作:
bool Sun = true;
ulong weeklyMask = 0;
if (Sun)
weeklyMask |= (int)IncrementScheduleMask.Sunday;
但這不會:
public static List<string> DaysOfTheWeek = new List<string>{
"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
};
public static Dictionary<string, IncrementScheduleMask> DaysOfTheWeekMasks = new Dictionary<string, IncrementScheduleMask>()
{
{ "Sun", IncrementScheduleMask.Sunday },
{ "Mon", IncrementScheduleMask.Monday },
{ "Tue", IncrementScheduleMask.Tuesday },
{ "Wed", IncrementScheduleMask.Wednesday },
{ "Thu", IncrementScheduleMask.Thursday },
{ "Fri", IncrementScheduleMask.Friday },
{ "Sat", IncrementScheduleMask.Saturday }
};
ulong weeklyMask = 0;
Action<string> _CompileWeekDays = new Action<string>(dayName =>
{
IncrementScheduleMask iMask = DaysOfTheWeekMasks[dayName];
weeklyMask |= (int)iMask;
});
DaysOfTheWeek.ForEach(_CompileWeekDays);
我已經與其他先行一步解決方案,但我想知道爲什麼一個工作,而不是另一個。如果你不能這樣施放,那麼這兩種方式不應該是相同的嗎?
你永遠不聲明'fullMask'在你的第二個形式......如果你試圖使用'weeklyMask' ,這從來沒有初始化。請給出一個簡短但完整的例子,其中失敗... –
我想他的意思是weeklyMask | =而不是weeklyMask!= – nhrobin
編輯修復錯別字,對不起傢伙。 – willPlachno2012