检查对象是否不是类型(!=等效于“IS”) - C#

时间:2009-02-09 21:04:04

标签: c# asp.net .net-2.0

这很好用:

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

    }

有没有办法检查发件人是不是TextBox,某种等价的!= for“是”?

请不要建议将逻辑移到ELSE {}:)

6 个答案:

答案 0 :(得分:151)

这是一种方式:

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

答案 1 :(得分:7)

你不能在is关键字之前做更详细的“旧”方式:

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

答案 2 :(得分:3)

C#9允许使用not运算符。您可以使用

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

代替

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

答案 3 :(得分:2)

两种众所周知的方法是:

1)使用IS运算符:

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

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

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

答案 4 :(得分:-1)

试试这个。

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

答案 5 :(得分:-1)

如果您使用继承:

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

... 无效

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

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