2016-05-12 9 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, 
} 

Unter diesen Themen ist ein Enum. Auch wenn ich keinen Wert für Themen eingabe, nimmt es standardmäßig 0. Dies ist das Verhalten von enum. Gibt es eine Möglichkeit zu überprüfen, ob ich einen Wert für das Thema gewählt habe?Wie Null-Check für enum

Hinweis: Ich möchte keinen Wert wie undefined in der enum.

+3

Das der Grund, warum Enum einen None-Wert haben sollte, der 0 darstellt. Sie können eine Nullable enum verwenden. –

+1

Enum ist keine 'Klasse' (oder, genauer gesagt, kein Referenztyp). Daher hat es nicht null als Wert. Wenn Sie möchten, dass enum "null" hat, können Sie eine Nullable enum verwenden: http://stackoverflow.com/questions/4337193/how-to-set-enum-to-null – Ian

Antwort

5

Sie können das Problem auf zwei Arten lösen.

Zunächst definieren einen None Wert (oder was auch immer Sie wollen, dass es nennen), die 0 dort, um anzuzeigen, stellt nichts für einen enum Wert gewählt ist:

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

Alternativ verwenden Nullable<subjects> oder subjects? in Ihrer Klasse ().

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 ? 
}   

Von den beiden Methoden ist die erste häufiger. Daher würde ich lieber den ersten verwenden.

0

können Sie die Klasse ändern wie folgt aussehen:

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

Damit das Thema NULL-Werte zulässt. Es bedeutet, dass wenn Sie es nicht festgelegt haben. Es wird null sein