1
我目前正在编写一个查看SQL代理作业的应用程序。我试图将FrequencyInterva l属性转换为7 bool字段(每天一个)将Int32转换为布尔
我在考虑对每种可能的组合使用case语句,但想知道是否有更有效的方法?
我目前正在编写一个查看SQL代理作业的应用程序。我试图将FrequencyInterva l属性转换为7 bool字段(每天一个)将Int32转换为布尔
我在考虑对每种可能的组合使用case语句,但想知道是否有更有效的方法?
你不需要七个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");
}
阅读完这篇文章后,该页面上引用的Weekdays枚举变得有意义,所以我使用它而不是写我自己的。非常感谢。 –
你能提供一些代码 –
沿途也许一些['BitConverter'(https://msdn.microsoft.com/de-de/library/windows/apps/system.bitconverter_members(V = VS .85).aspx)可以提供帮助吗? –
不是一个真正的答案,但为什么不只是创建一个自定义方法,就像3行代码为您转换它?可能更容易一些。 – jdmdevdotnet