喜纔去直接的問題讓我告訴我的代碼:如何確定給定int值屬於哪個枚舉
//Definition of enum
public enum LogType
{
Warning = -2,
Error = -1,
Info = 0,
EruCtorDtor = 1,
Notifications = 2,
CommunicationWithAOT = 4,
ExecutedOrder = 8,
ERUInfo = 16,
DebugLog = 32,
}
//Use of enum
CurrentLogFlagSettings = nLogFlag;
LogFlagMap = new SortedDictionary<LogType, int>();
ulong mask = 1;
while(mask <= nLogFlag)
{
if ((nLogFlag & mask) == mask)
{
LogType type = (LogType)mask; //Step 1
string val = type.ToString(); //Step 2
//Processing the value
LogFlagMap.Add(type, tempVal)
LogMsg(val + " added", type);
}
mask <<= 1;
}
我要的是:第一步已經產生了有效的價值的過程第二步之後。我的意思是值應該在枚舉定義中定義的範圍之間。否則,我不想處理它。例如對於例如
- 案例1 - 可以說掩碼值是32, 它在枚舉中定義。所以類型是 獲得價值DEBUGLOG所以它 type.ToString()(即「DEBUGLOG」), 這是一個有效的情況。
- case 2-讓 說掩碼值是128,它不是 定義在枚舉中,在這種情況下,我不 想要處理128 值的任何東西。但發生了什麼 類型的輸入值128和 類型.ToString()將它轉換爲128.我不想要這個,我想要 確定是否屬於 枚舉值或不。
我想阻止第二種情況來執行。有沒有解決我的問題?
請讓我知道,如果需要更多的細節。
由於它的工作。只需稍做更改Console.WriteLine(Enum.IsDefined(typeof(LogType),(LogType)value)); – vrajs5 2011-05-13 06:36:24
@ vrajs5:很高興知道它有幫助! – alex 2011-05-13 07:37:34