Das funktioniert gut:
protected void txtTest_Load(object sender, EventArgs e)
{
if (sender is TextBox) {...}
}
Gibt es eine Möglichkeit zu überprüfen, ob der Absender KEINE TextBox ist, eine Art Äquivalent von! = Für "ist"?
Bitte schlagen Sie nicht vor, die Logik auf ELSE {} zu verschieben :)
if (false == sender is TextBox)
false
als ihn zu negieren. Die Verwendung des Wortesis
kann genug visuelle Ablenkung sein, so dass ein bloßer Blick durch den Code das leicht übersehen kann!Könnten Sie nicht auch den ausführlicheren "alten" Weg vor dem
is
Schlüsselwort machen:if (sender.GetType() != typeof(TextBox)) { // ... }
quelle
Zwei bekannte Methoden sind:
1) Verwenden des IS-Operators:
if (!(sender is TextBox)) {...}
2) Verwenden des AS-Operators (nützlich, wenn Sie auch mit der textBox-Instanz arbeiten müssen):
var textBox = sender as TextBox; if (sender == null) {...}
quelle
is
undas
kann hier gefunden werdenWenn Sie Vererbung verwenden wie:
public class BaseClass {} public class Foo : BaseClass {} public class Bar : BaseClass {}
... Null resistent
if (obj?.GetType().BaseType != typeof(Bar)) { // ... }
oder
if (!(sender is Foo)) { //... }
quelle
Versuche dies.
var cont= textboxobject as Control; if(cont.GetType().Name=="TextBox") { MessageBox.show("textboxobject is a textbox"); }
quelle
as Control
verhält sich die erste Zeile anders alsGetType()
auf einerobject
? Abgesehen davon ist der Zeichenfolgenvergleich für so etwas kein refaktorfreundlicher Code.