Wie setze enum auf null
Ich habe eine enum -
string name;
public enum Color
{
Red,
Green,
Yellow
}
Wie setzen Sie es auf NULL auf laden.
name = "";
Color color = null; //error
Bearbeitet:
Meine schlecht, ich habe nicht zu erklären, es richtig. Aber alle Antworten bezogen sich auf null festlegbar ist perfekt. Meine situation ist Was wenn, ich die get/set für die enum in einer Klasse mit anderen Elementen wie name, etc. Beim laden der Seite ich initiallize der Klasse und versuchen, um die Standardeinstellung der Werte auf null. Hier ist das Szenario (Code ist in C#):
namespace Testing
{
public enum ValidColors
{
Red,
Green,
Yellow
}
public class EnumTest
{
private string name;
private ValidColors myColor;
public string Name
{
get { return name; }
set { name = value; }
}
public ValidColors MyColor
{
get { return myColor; }
set { myColor = value; }
}
}
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
EnumTest oEnumTest = new EnumTest();
oEnumTest.Name = "";
oEnumTest.MyColor = null; //???
}
}
}
Dann mit den Vorschlägen unten, änderte ich den obigen code, damit es funktioniert mit get-und set-Methoden. Ich muss nur hinzufügen "?" in EnumTest Klasse bei der Deklaration von privaten enum-variable und get/set-Methode:
public class EnumTest
{
private string name;
private ValidColors? myColor; //added "?" here in declaration and in get/set method
public string Name
{
get { return name; }
set { name = value; }
}
public ValidColors? MyColor
{
get { return myColor; }
set { myColor = value; }
}
}
Danke an alle für die schönen Vorschläge.
InformationsquelleAutor der Frage Sri Reddy | 2010-12-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie entweder mit der"? " - operator für eine nullable-Typ.
Oder verwenden Sie die gängige Praxis für die enums, das kann nicht null sein, indem der ERSTE Wert in der enum (aka 0) werden der Standard-Wert. Zum Beispiel in einem Fall, der Farbe Keine.
InformationsquelleAutor der Antwort Rodney S. Foley
Wenn das ist C#, funktioniert es nicht: enums sind value-Typen und können nicht
null
.Den normalen Optionen zum hinzufügen einer
None
Mitglied:...oder verwenden
Nullable
:InformationsquelleAutor der Antwort Tim Robinson
Machen Sie Ihre Variablen null-Werte zu. Wie:
oder
InformationsquelleAutor der Antwort Cj S.
Enum ist ein "Wert" - Typ in C# (bedeutet die enum gespeichert ist, als was es Wert ist, nicht als Verweis auf einen Speicherplatz, wo der Wert gespeichert ist). Sie können nicht von Wert-Typen zu null (da wird null verwendet für Referenz-Typen nur).
Dass gesagt wird, können Sie mit der eingebauten
Nullable<T>
Klasse die wraps Wert-Typen, so dass Sie können setzen Sie auf null überprüfen, ob esHasValue
und bekommen Ihre eigentlicheValue
. (Die sind beide Methoden auf dieNullable<T>
Objekte.Gibt es auch ein Tastaturkürzel, die Sie verwenden können:
Dass ist das gleiche wie
Nullable<Color>
;InformationsquelleAutor der Antwort Crisfole
Ich gehe davon aus, dass c++ hier. Wenn Sie c# verwenden, die Antwort ist wohl die gleiche, aber die syntax ein bisschen anders.
Das enum ist eine Reihe von int-Werten. Es ist nicht ein Objekt, so sollten Sie nicht setzen es auf null. Etwas auf null bedeutet, Sie zeigen ein Zeiger auf ein Objekt an Adresse null. Sie können nicht wirklich tun, dass mit einer int. Was Sie tun möchten, mit einem int zu setzen, ist es Wert, würden Sie normalerweise nicht haben, so dass Sie Telefon, wenn es ein guter Wert ist oder nicht.
Also, setzen Sie Ihre Farbe zu -1
Oder, können Sie beginnen Ihre enum bei 1 und setzen Sie ihn auf null. Wenn Sie die Farbe auf null so wie es jetzt ist, werden Sie die Einstellung "rot", denn rot ist null in Ihrer enum.
So,
InformationsquelleAutor der Antwort Rokujolady