2016-12-13 5 views
1

В настоящее время я пишу приложение, которое смотрит на SQL Agent Jobs. Я пытаюсь преобразовать FrequencyInterva l собственности в 7 полей bool (по одному на каждый день)Convert Int32 to Bool

Я думал об использовании оператора case для каждой возможной комбинации, но задавался вопросом, есть ли более эффективный способ?

+0

вы можете предоставить некоторый код –

+1

Может быть что-то по пути [ 'BitConverter'] (https://msdn.microsoft.com/de-de/library/windows/apps/system.bitconverter_members (v = против .85) .aspx) может помочь? –

+0

Не совсем ответ, но почему бы просто не создать собственный метод, похожий на 3 строки кода, которые преобразуют его для вас? Наверное, намного проще. – jdmdevdotnet

ответ

9

Вам не нужны семь переменных bool, но вы можете просто определить перечисление с помощью attribute Flags со значениями, равными значениям, определенным для этого свойства. Затем назначьте свойство FrequencyInterval переменной этого типа перечисления.

[Flags] 
public enum frequencyDaysEnum 
{ 
    Sunday = 1, 
    Monday = 2, 
    Tuesday = 4, 
    Wednesday = 8, 
    Thursday = 16, 
    Friday = 32, 
    Saturday = 64, 
// You can also add these but they are not necessary 
// WeekDays = 62, 
// WeekEnds = 65, 
// EveryDay = 127 
} 

void Main() 
{ 
    int value = 65; // <= this is the value of your property 
    frequencyDaysEnum days = (frequencyDaysEnum)value; 

    if(days.HasFlag(frequencyDaysEnum.Saturday)) 
     Console.WriteLine("It has frequency on Saturday"); 

    if (days.HasFlag(frequencyDaysEnum.Sunday)) 
     Console.WriteLine("It has frequency on Sunday"); 
} 
+1

После прочтения этого перечисления на буднях, упомянутых на этой странице, имели смысл, поэтому я использовал это, а не писал свои собственные. Огромное спасибо. –