c# - c sharp 类型模式导致编译器错误
问题描述
我有以下 catch 语句:
catch (CustomException e) when (e.InnerException is MySqlException ex && ex.Number == 1062)
{
// handle duplicate inserts
}
这永远不会过滤掉我需要的异常和声明:
e.InnerException is MySqlException ex && ex.Number == 1062
当我看到消息时导致编译器错误:“c# 编译器中的内部错误”(见下图)。
将其更改为以下作品:
catch (CustomException e) when (e.InnerException is MySqlException && ((MySql.Data.MySqlClient.MySqlException)e.InnerException).Number == 1062)
{
// handle duplicate inserts
}
谁能告诉我为什么第一次使用不起作用?这是此处找到的文档的一部分:https ://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/is#-type-pattern-
这是我的 dotnet --info 结果
.NET Core SDK (reflecting any global.json):
Version: 2.1.503
Commit: 4c506e0f35
Runtime Environment:
OS Name: Windows
OS Version: 10.0.17134
OS Platform: Windows
RID: win10-x64
Base Path: C:\Program Files\dotnet\sdk\2.1.503\
Host (useful for support):
Version: 2.1.7
Commit: cca5d72d48
.NET Core SDKs installed:
2.1.202 [C:\Program Files\dotnet\sdk]
2.1.402 [C:\Program Files\dotnet\sdk]
2.1.403 [C:\Program Files\dotnet\sdk]
2.1.503 [C:\Program Files\dotnet\sdk]
.NET Core runtimes installed:
Microsoft.AspNetCore.All 2.1.4 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.7 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.4 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.7 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 2.0.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.4 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]