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?

Schreibe einen Kommentar