c# – Enum.IsDefined为字符串返回false

我对字符串使用了Enum.IsDefined()方法,但在我认为应该为True的情况下,我得到False.请检查以下代码:

public enum YourEnum : int
{
    Zero = 0,
    One = 1
}

public class Program
{

    public static void Main(string[] args)
    {
        Console.WriteLine(Enum.IsDefined(typeof(YourEnum), 1));
        Console.WriteLine(Enum.IsDefined(typeof(YourEnum), 1.ToString()));
    }
} 

C# Fiddle Demo
结果:

True
False

我不知道为什么我在第二种情况下会得到假.任何帮助表示赞赏.

最佳答案
将字符串传递给IsDefined()方法时,您询问枚举中是否存在具有该名称的值. The documentation读:

The value parameter can be any of the following:
• Any member of type enumType.
• A variable whose value is an enumeration member of type enumType.
The string representation of the name of an enumeration member. The characters in the string must have the same case as the enumeration member name.
• A value of the underlying type of enumType.

(强调我的)

读取有点令人困惑,因为第一,第二和第四个选项首先导致相同的事情:传递的枚举类型的值(当然是盒装的).

但第三个选项是你的场景发生了什么,字符串需要与枚举成员的名称相匹配.您传递的字符串为“1”,枚举中唯一有效的名称为“Zero”和“One”.字符串“1”与其中任何一个都不匹配,因此IsDefined()返回false.

转载注明原文:c# – Enum.IsDefined为字符串返回false - 代码日志