如果我们尝试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.TryParse了Enum.IsDefined.
.net 核心版本:
>dotnet --list-sdks
2.2.110 [C:\Program Files\dotnet\sdk]
2.2.207 [C:\Program Files\dotnet\sdk]
3.1.101 [C:\Program Files\dotnet\sdk]
Run Code Online (Sandbox Code Playgroud)
此输出来自使用 VS2017 以调试模式运行的控制台(这意味着应用程序可能在 2.2.110 运行时下运行)。
这是 .net 核心中的错误吗?我试图在 .net core github repo 上找到错误报告,但没有运气。
| 归档时间: |
|
| 查看次数: |
162 次 |
| 最近记录: |