检查对象是不是types(!=相当于“是”) – C#

这工作得很好:

protected void txtTest_Load(object sender, EventArgs e) { if (sender is TextBox) {...} } 

有没有办法来检查发件人是不是一个文本框,某种相当于!=“是”?

请不要将逻辑移到ELSE {} 🙂

这是一个方法:

 if (!(sender is TextBox)) {...} 

难道你不能在is关键字之前做更详细的“老”方法:

 if (sender.GetType() != typeof(TextBox)) { // ... } 

两个众所周知的做法是:

1)使用IS操作符:

 if (!(sender is TextBox)) {...} 

2)使用AS运算符(如果您还需要使用textBox实例,则很有用):

 var textBox = sender as TextBox; if (sender == null) {...} 

尝试这个。

 var cont= textboxobject as Control; if(cont.GetType().Name=="TextBox") { MessageBox.show("textboxobject is a textbox"); } 

如果你使用inheritance如:

 public class BaseClass {} public class Foo : BaseClass {} public class Bar : BaseClass {} 

…没有抵抗力

 if (obj?.GetType().BaseType != typeof(Bar)) { // ... } 

要么

 if (!(sender is Foo)) { //... }