2010-09-21 94 views
10

我花了一段時間試圖瞭解爲什麼我的WPF應用程序不是綁定到enum屬性的屬性,這是原因。爲什麼C#允許一個無效的枚舉值

static void Main(string[] args) 
{ 
    MyEnum x = 0; 
    Console.WriteLine(x.ToString()); 
    Console.ReadLine(); 
} 

public enum MyEnum 
{ 
    First = 1, 
    Second = 2 
} 

本質的問題是,有在課堂上,我被結合的構造函數的枚舉屬性設置沒有默認值,所以它被默認爲零。

是否有某種方式可以告訴C#編譯器我希望它只接受有效值(並且默認爲最低值)?我不希望我的屬性接受無效值,而且我也不想爲每個使用枚舉的屬性編寫setter代碼。

回答

10

不,不幸的不是。

C#枚舉是剛剛命名的數字,真的 - 根本沒有驗證。我同意看到這個以及帶有行爲的枚舉(就像使用Java)是非常好的。我沒有聽到任何建議它即將來臨,但:(

請注意,類型的默認值將始終是「所有零位」表示的值 - 沒有辦法在因此無論你需要做出一個合理的默認值,或者即使在驗證系統中也必須對其進行明確測試(例如,針對參考類型測試null)。 ,我相信有時候有「數字的名字」這種類型是有道理的......但是我認爲一套真正有限的價值觀會更有用。

+1

哇,我終於找到了一些東西我認爲這更好Delphi比在C#中:) – 2010-09-21 12:52:31