2016-05-12 16 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をとります。これはenumの動作です。私が被験者のために任意の値を選んだかどうかを確認する方法はありますか?enumのnullチェックのしかた

注:列挙型では未定義のような値は使用しません。

+3

その理由は、任意の列挙体が0を表す 'None'値を持つべき理由です。nullable列挙型を使用することができます。 –

+1

列挙型は 'class'(または、より正確には参照型ではありません)ではありません。したがって、値として「ヌル」はありません。 enumに 'null 'を設定したい場合、nullable enumを使うことができます:http://stackoverflow.com/questions/4337193/how-to-set-enum-to-null – Ian

答えて

5

2つの方法で問題を解決できます。 (自分のクラスにNullable<subjects>またはsubjects?を使用し、また

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

まず、enum値のために選ばれたものは何もありません示すために0を表しNone値(または何でもあなたはそれに名前を付けたい)を定義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 ? 
}   

2つの方法のうち、最初の方法が一般的です。したがって、私はむしろ最初のものを使用します。

0

あなたはこのように見えるようにクラスを変更することができます。被写体がNULL可能であるように

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

。それはあなたがそれを設定していないときにそれを意味します。それはnullになります

関連する問題