gpt4 book ai didi

c# - Enum.IsDefined 对字符串返回 false

转载 作者:太空狗 更新时间:2023-10-29 18:04:30 24 4
gpt4 key购买 nike

我对字符串使用了 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

我不知道为什么在第二种情况下我应该得到 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,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48041253/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com