Допустим, мы определили Planets
enum:
public enum Planets
{
Sun = 0,
Mercury=5,
Venus,
Earth,
Jupiter,
Uranus,
Neptune
}
Я использовал метод Enum.IsDefined
для определения, существует ли строка в перечислении или нет.
Enum.IsDefined(typeof(Planets), "Mercury"); // result is true
Но затем я попробовал это, и он также вернул true:
Enum.IsDefined(typeof(Planets), 5); // result is true again
Как это получается? Этот метод не имеет перегрузки. Он имеет только одну подпись:
Enum.IsDefined(Type enumType, object value);
Зачем и как Enum.IsDefined
искать как имя, так и значение? И мне действительно интересно, почему они так решили? ИМО, делающий перегрузки, будет лучшим выбором, а не?