這只是正常:檢查對象的類型是NOT(!=等同於 「IS」) - C#
protected void txtTest_Load(object sender, EventArgs e)
{
if (sender is TextBox) {...}
}
有沒有一種方法來檢查,如果發件人不是一個TextBox,某種類型的相當於!= for「is」?
請,不建議移動邏輯ELSE {} :)
這只是正常:檢查對象的類型是NOT(!=等同於 「IS」) - C#
protected void txtTest_Load(object sender, EventArgs e)
{
if (sender is TextBox) {...}
}
有沒有一種方法來檢查,如果發件人不是一個TextBox,某種類型的相當於!= for「is」?
請,不建議移動邏輯ELSE {} :)
這是一種方式:
if (!(sender is TextBox)) {...}
你們能不能也做了更詳細的「老」的方式,前is
關鍵字:
if (sender.GetType() != typeof(TextBox)) { // ... }
試試這個。
var cont= textboxobject as Control;
if(cont.GetType().Name=="TextBox")
{
MessageBox.show("textboxobject is a textbox");
}
如果您使用繼承,如:
public class BaseClass
{}
public class Foo : BaseClass
{}
public class Bar : BaseClass
{}
... 空性
if (obj?.GetType().BaseType != typeof(Bar)) { // ... }
或
if (!(sender is Foo)) { //... }
兩個著名的做這件事的方式是:
1)用的就是運營商:
if (!(sender is TextBox)) {...}
2),使用操作符(有用的,如果你還需要與文本框實例工作):
var textBox = sender as TextBox;
if (sender == null) {...}
對於這種特殊的情況下,我寧願如果(發件人是TextBox == false)。像這樣的笨拙的語法。 – 2009-02-09 21:16:04
@hmemcpy:就我個人而言,只要我看到一個布爾常量的比較,就會畏縮。大概是我的C背景展示了......儘管如此,讓我的皮膚爬行,並且我不會讓它獨自留在編輯的代碼中。 – Shog9 2009-02-09 21:17:47
@IgalTabachnik imo如果你打算寫出冗長的邏輯反轉語句,以便清楚地說明它寫得更清晰,就像`if(false == sender is TextBox)` – 2016-10-06 19:13:58