2016-12-13 69 views
1

我目前正在编写一个查看SQL代理作业的应用程序。我试图将FrequencyInterva l属性转换为7 bool字段(每天一个)将Int32转换为布尔

我在考虑对每种可能的组合使用case语句,但想知道是否有更有效的方法?

+0

你能提供一些代码 –

+1

沿途也许一些['BitConverter'(https://msdn.microsoft.com/de-de/library/windows/apps/system.bitconverter_members(V = VS .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

阅读完这篇文章后,该页面上引用的Weekdays枚举变得有意义,所以我使用它而不是写我自己的。非常感谢。 –