2016-05-12 71 views
0
public class myclass 
    { 
     public Details DetailsInfo { get; set; } 
     public string name{ get; set; } 
     public string Email { get; set; } 
     public int subjects{ get; set; } 
    } 

public enum subjects{ 
maths, 
english, 
science, 
} 

這些主題是枚舉。即使我沒有爲主題輸入任何值,默認情況下它也是0。這是枚舉的行爲。有什麼方法可以檢查我是否選擇了任何主題值。如何爲枚舉執行null檢查

注意:我不想在枚舉中定義任何未定義的值。

+3

這就是爲什麼任何枚舉應該有一個'None'值代表0.你可以使用一個可爲空的枚舉。 –

+1

枚舉不是'類'(或者,更準確地說,不是引用類型)。因此它沒有'null'值。如果你想讓枚舉具有null,你可以使用可枚舉枚舉:http://stackoverflow.com/questions/4337193/how-to-set-enum-to-null – Ian

回答

5

您可以通過兩種方式解決問題。

首先,定義一個None值(或任何你想將它命名),它代表了0,表示沒有什麼選擇了一個enum值:

public enum subjects{ 
    None = 0, //define this 
    maths, 
    english, 
    science, 
} 

或者,在你的課堂上使用Nullable<subjects>subjects?myclass)。

public class myclass 
{ 
    public Details DetailsInfo { get; set; } 
    public string name{ get; set; } 
    public string Email { get; set; } 
    public subjects? subj { get; set; } //note the question mark ? 
}   

的兩種方法,第一種是比較常見的。因此我寧願使用第一個。

0

您可以更改類看起來像這樣:

public class myclass 
    { 
     public Details DetailsInfo { get; set; } 
     public string name{ get; set; } 
     public string Email { get; set; } 
     public subjects? subject { get; set; } 
    } 

,使拍攝對象爲空。這意味着你沒有設置它。它將爲空