2016-12-13 236 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枚舉變得有意義,所以我使用它而不是寫我自己的。非常感謝。 –