2013-01-03 145 views
4
public enum WeekDays { Sun = 1, Mon = 2, Tue=3, Wed=4, Thu=5, Fri=6, Sat=7 } 

我有這個枚舉,我有枚舉值。我想做的是通過傳值將我想要的類型傳遞給下面的函數。我可以通過開關箱做到這一點更好的辦法?從值獲取枚舉類型

例如:如果值爲6,則Weekdays.Fri應作爲類型傳遞給下面的函數。

public void CreateNew(WeekDays days) 
    { 
    //Some logic 
    } 
+3

有已經爲此枚舉:'DayOfWeek'(http://msdn.microsoft.com/en-us/library/system.dayofweek.aspx) –

+0

是@ TimSchmelter這是一個虛擬代碼 – ankur

回答

7

您所需要做的就是施放該值。

CreateNew((WeekDays)6); 

枚舉值本質上只是類型整數,所以你可以自由地在枚舉類型和整型類型之間進行轉換。甚至可以將枚舉中不存在的整型值轉換爲該類型中的整數值,因此如果您想避免這種情況,請記住在轉換之前添加用於檢查值是否存在的驗證。

3

只投值枚舉:

CreateNew((WeekDays)value) 

BTW通常它是很好的檢查值在枚舉聲明,如果衡源是不是安全。否則,你可以通過(WeekDays)42

public void CreateNew(WeekDays days) 
{ 
    if (!Enum.IsDefined(typeof(WeekDays), days)) 
     throw new ArgumentException(); 

    // SomeLogic 
}