catch块版本C#6和旧版本之间有所不同

H. *_*lyn 0 c# try-catch catch-block c#-6.0

在C#6中,您可以创建以下代码:

try  { }
catch (Exception e) when (e is NullReferenceException) { }
catch (Exception e) when (e is UnauthorizedAccessException) { }
Run Code Online (Sandbox Code Playgroud)

但是上面的代码和下面的旧C#代码有什么不同?

try  { }
catch (NullReferenceExceptione e) { }
catch (UnauthorizedAccessExceptione e) { }
Run Code Online (Sandbox Code Playgroud)

对我来说,旧版本看起来最短,最好用.

Ser*_*rvy 5

但是上面的代码和下面的旧C#代码有什么不同?

e将是Exceptioncatch的主体中的类型,而不是派生类型.

对我来说,旧版本看起来最短,最好用.

然后使用它.


在整点when这里的关键字是,它允许你写任意布尔表达式,以确定是否有匹配,而不是能够过滤基于表达式是否为给定派生类型的表达式.