WPF 中是否需要对事件处理程序参数进行验证检查?

There are need to validation check for event handler argument in WPF?

下面是示例代码。

private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
   // case 1
   if (sender is ListBox)
   {
      ...
   }

   // case 2
   if (e.AddedItems.Count > 0)
   {
      if (e.AddedItems[0] is MyItemClass)
      {
         ...
      }
   }
}

这里对于情况1,我们已经知道sender是一个ListBox。但是是否需要像上面的示例代码那样进行验证检查?

同样,在情况2中,项目在列表框中被选中,我们已经知道项目类型是什么。但是是否需要检查AddedItems.Count和类型验证检查?

  1. 从理论上讲,您可以让列表框的另一个子项更改其自己的选择,并且该事件可能会冒泡到列表框,而列表框又会尝试处理它。所以,不太可能,但如果代码经过审查,则认为是正确的。

  2. 再一次,是的。因为选择更改意味着 Removed/Added 并且您无法确定发生了什么变化。如果您不关心更改本身,您可以简单地从步骤 1 中获取列表框实例并检查其 SelectedItems,然后使用它们。