这是什么 C# 功能?
What C# feature is this?
在我的 C# 应用程序(使用 C# 9)中,我有一行代码如下:
var filterCallback = new HitTestFilterCallback(
el => el is Path s && s.DataContext is IShape shp ?
HitTestFilterBehavior.Continue : HitTestFilterBehavior.ContinueSkipSelf);
Resharper 建议我“合并顺序检查”。它将代码重写为
var filterCallback = new HitTestFilterCallback(
el => el is Path {DataContext: IShape shp}
?
HitTestFilterBehavior.Continue : HitTestFilterBehavior.ContinueSkipSelf);
我对让我写的位感兴趣
{DataContext: IShape shp}
代替
s.DataContext is IShape shp
此功能是否有特定的技术语言名称?我想阅读它以更好地理解它,但我什至不知道该怎么称呼它。我尝试查看“模式匹配”并阅读有关“is”关键字的内容,但没有看到任何类似的内容?
该功能称为“递归模式”。特别是它使用“属性 模式”作为“递归模式”的一部分。
您可以在此处找到提案文件:https://github.com/dotnet/csharplang/blob/master/proposals/csharp-8.0/patterns.md
您可以在此处找到更非正式的博客 post:https://devblogs.microsoft.com/dotnet/do-more-with-patterns-in-c-8-0/
在我的 C# 应用程序(使用 C# 9)中,我有一行代码如下:
var filterCallback = new HitTestFilterCallback(
el => el is Path s && s.DataContext is IShape shp ?
HitTestFilterBehavior.Continue : HitTestFilterBehavior.ContinueSkipSelf);
Resharper 建议我“合并顺序检查”。它将代码重写为
var filterCallback = new HitTestFilterCallback(
el => el is Path {DataContext: IShape shp}
?
HitTestFilterBehavior.Continue : HitTestFilterBehavior.ContinueSkipSelf);
我对让我写的位感兴趣
{DataContext: IShape shp}
代替
s.DataContext is IShape shp
此功能是否有特定的技术语言名称?我想阅读它以更好地理解它,但我什至不知道该怎么称呼它。我尝试查看“模式匹配”并阅读有关“is”关键字的内容,但没有看到任何类似的内容?
该功能称为“递归模式”。特别是它使用“属性 模式”作为“递归模式”的一部分。
您可以在此处找到提案文件:https://github.com/dotnet/csharplang/blob/master/proposals/csharp-8.0/patterns.md
您可以在此处找到更非正式的博客 post:https://devblogs.microsoft.com/dotnet/do-more-with-patterns-in-c-8-0/