Warum und wie sich (intern) nicht Enum.IsDefined Suche für name und Wert?
Können sagen, wir haben definiert Planets
enum:
public enum Planets
{
Sun = 0,
Mercury=5,
Venus,
Earth,
Jupiter,
Uranus,
Neptune
}
War ich mit Enum.IsDefined
Methode für die Feststellung, ob string vorhanden ist in enum oder nicht.
Enum.IsDefined(typeof(Planets), "Mercury"); //result is true
Aber, dann habe ich versucht, und es kehrte wahr ist auch:
Enum.IsDefined(typeof(Planets), 5); //result is true again
Wie es kommt? Diese Methode hat keine überladung. Es hat nur eine Unterschrift:
Enum.IsDefined(Type enumType, object value);
Warum und wie Enum.IsDefined
Suche für beide Namen und Wert? Und es ist wirklich interessant für mich, warum haben Sie chosed so? IMO macht überladungen wäre die bessere Wahl, nicht?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vom
- Enum.IsDefined
MethodeIch glaube, dass ist der Grund, warum es keine überlast und nimmt
object
als zweiten parameter. Da diese Methode nimmtobject
als zweiten parameter - undobject
ist eine Basis-Klasse für alle .NET-Typen - Sie können passstring
oderint
oder etc..Hier, wie diese Methode umgesetzt;
Aussieht virtuellen
- Typ.IsEnumDefined
Methode verarbeitet alle diese Fälle ist es Umsetzung wie;http://referencesource.microsoft.com/
vorlag. Es war interessant für mich, tun Sie Prüfung Art der Eingabe? Und es scheint, dass das ja von dieser Methode.Type.IsEnumDefined
Methode, prüft es, es ist der Typ mitif(valueType.IsEnum)
undif(valueType == typeof(string))
undif(Type.IsIntegerType(valueType))
In der Dokumentation für Enum.IsDefined es besagt, dass dieser Wert
Die Sie gegeben haben Quecksilber den Wert von
5
daher ist es in der Lage, um zu sehen, diese