Привет, прежде чем приступить к решению проблемы, позвольте мне показать мой код:
//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;
}
То, что я хочу: Обрабатывать шаг 2 только после того, как шаг 1 выдал допустимое значение.Я имею в виду значение должно быть между диапазоном, определенным в определении enum.В противном случае я не хочу обрабатывать это.например,
- case 1 - допустим, значение маски равно 32, оно определено в enum.Таким образом, тип получает значение DebugLog, и поэтому это type.ToString () (то есть "DebugLog"), это допустимый случай.
- case 2- Позволяет сказать, что значение маски равно 128 и оно не определено в enum, в этом случае я не хочу обрабатывать что-либо со значением 128.Но то, что происходит, получает значение 128 в типе и типе. ToString () преобразует его в 128. Я не хочу этого, я хочу убедиться, принадлежит ли 128 значениям перечисления или нет.
Я хочу предотвратить выполнение второго дела.Есть ли какое-нибудь решение для моей проблемы?
Пожалуйста, дайте мне знать, если потребуется более подробная информация.