首页 > 解决方案 > 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]

标签: c#.net-core

解决方案


推荐阅读