小编mil*_*lan的帖子

Enum<T>.Parse 允许解析任何整数字符串。它是 .net 核心中的错误吗?

如果我们尝试Enum.Parse<T>使用字符串整数 ( "2", "3", "55", ...)调用,即使 Enum 没有定义解析值,解析也会成功。

这是示例代码

public static class Program
{
    enum TestEnum
    {
        A = 0,
        B = 1,
        C = 2
    }

    public static void Main(string[] args)
    {
        TestEnum value = Enum.Parse<TestEnum>("4");
        Console.WriteLine(value); // outputs 4 to console

        bool result = Enum.TryParse<TestEnum>("4", out _);
        Console.WriteLine(result); // writes True 

        bool isDefined = Enum.IsDefined(typeof(TestEnum), "4");
        Console.WriteLine(isDefined); // writes False
    }
}
Run Code Online (Sandbox Code Playgroud)

这种行为在我看来是出乎意料的。我们在我们的应用程序中发现了一个错误,因为我们使用Enum.TryParseEnum.IsDefined.

.net 核心版本:

>dotnet --list-sdks
2.2.110 [C:\Program …
Run Code Online (Sandbox Code Playgroud)

c# .net-core

2
推荐指数
1
解决办法
162
查看次数

标签 统计

.net-core ×1

c# ×1