“使用模式匹配”消息

问题描述

Visual Studio给我消息:

使用模式匹配

使用代码IDE0020

摘要

private void BTclear_Clicked(object sender,RoutedEventArgs e)
{
  Button BTclear = (Button)sender;
  if (BTclear.DataContext is ObservableCollectionUser)
  {
    ObservableCollectionUser clearMe = (ObservableCollectionUser)BTclear.DataContext;
    Users.Remove(clearMe);
  }
}

if语句带有绿色下划线。

这是什么意思,我该如何对其进行优化?

解决方法

您可以使用类型模式来引入类型为ObservableCollectionUser的新变量,而无需进行强制转换:

private void BTclear_Clicked(object sender,RoutedEventArgs e)
{
    Button button = (Button) sender;
    if (button.DataContext is ObservableCollectionUser user)
    {
        Users.Remove(user);
    }
}

(根据命名约定,我将BTclear重命名为button是更惯用的,但是重要的部分是在user表达式中引入了is变量)

请注意,这并不是真正意义上的优化,而是关于代码更清晰,更简单。 可能稍快一些,但意义不大。