如何解决这是什么 C# 特性?
在我的 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
您可以在此处找到有关它的更非正式的博文:https://devblogs.microsoft.com/dotnet/do-more-with-patterns-in-c-8-0/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。