2009-02-09 11 views

Répondre

129

C'est une façon:

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

Pour cette situation particulière que je préfère si (l'expéditeur est TextBox == false). Syntaxe moins maladroite comme ça. –

+5

@hmemcpy: Personnellement, je recule chaque fois que je vois une comparaison à une constante booléenne. Probablement mon arrière-plan en C apparaissant à travers ... Pourtant, ma peau rampe, et il n'y a aucun moyen de le laisser seul dans le code que je suis en train d'éditer. – Shog9

+0

@IgalTabachnik imo si vous allez écrire des instructions logiquement inversées avec la verbosité pour plus de clarté, il devient plus clair de l'écrire comme si (faux == expéditeur est TextBox) ' –

6

Ne pourriez-vous faire aussi la « vieille » plus bavard, avant le is mot-clé:

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

Bien sûr, vous pouvez le faire, mais notez que le mot clé "is" correspond à n'importe quel objet dérivé de TextBox, alors que cette vérification typeof() ne correspond qu'aux TextBoxes. – mquander

+1

Ah, je ne le savais pas. Apprenez quelque chose de nouveau tous les jours :) –

-1

Essayez ceci.

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

Pourquoi la ligne initiale 'as Control', se comporte-t-elle différemment de 'GetType()' sur un 'object'? Autre que cela, la comparaison de chaîne pour quelque chose comme ceci n'est pas le code amical de refactor. – Stijn

-1

Si vous utilisez l'héritage comme:

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

... Null résistant

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

ou

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

Deux façons de faire bien connus, il est :

1) En utilisant IS opérateur:

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

2) en utilisant comme opérateur (utile si vous devez également travailler avec l'instance textBox):

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