我有以下代码:
if (!(sender is Button b)) return false;
if (!(sender is ToolStripMenuItem menuItem)) return false; // always true
switch (b.Name)
{
//some code
}
因此,由于某些我无法确定的原因,第二行总是被认为是真的。如果我先移动它并且第一个移动它,那么按钮线总是假定为真。无论我把第二条线放在哪一条线上,它总是被认为是真的,但如果它是第一条则不然。
我试图理解为什么会发生这种情况以及如何解决它。任何帮助表示赞赏。
答案 0 :(得分:3)
根据您的评论和要求执行代码,具体取决于sender
类型,具体如何......
switch (sender)
{
case Button b:
//Do button stuff;
break;
case ToolStripMenuItem menuItem:
//Do menu item stuff;
break;
default:
return false;
}
答案 1 :(得分:2)
第一行保证sender
为Button
。
这意味着它也不能是ToolStripMenuItem
,因此第二次检查将始终成功。