2009-01-26 6 views

Répondre

15

La plupart du temps, il est redondant et peut être omis; A quelques exceptions près:

  • pour appeler un constructeur enchaîné: Foo() : this("bar") {}
  • désambiguïser entre un argument/variable locale et un champ: this.foo = foo; etc
  • appeler une extension de méthode sur l'instance actuelle: this.SomeMethod(); (où défini comme public static SomeMethod(this Foo foo) {...})
  • pour passer une référence à l'instance en cours à une méthode externe: Helper.DoSomething(this);
1

toujours ... juste mes 2 cents

2

J'utilise 'ceci' quand il devient ambigieux ce à quoi vous vous référez, ayant une variable locale avec le même nom/similaire à une variable/méthode de classe.

Mais c'est vraiment une préférence personnelle, utilisez ce que vous préférez.

+0

J'avais tendance à ne pas utiliser 'ceci' 95% du temps. Mais alors j'ai commencé à me demander s'il me manquait quelque chose. Je peux toujours être sûr de clarifier les choses ici sur SO. –

4

cette est principalement utilisé pour utiliser explicitement un membre de la classe lorsque le nom seul serait ambigu, comme dans cet exemple:

public class FooBar 
{ 
    private string Foo; 
    private string Bar; 

    public void DoWhatever(string Foo, string Bar) 
    { 
     // use *this* to indicate your class members 
     this.Foo = Foo; 
     this.Bar = Bar; 
    } 

    public void DoSomethingElse() 
    { 
     // Not ambiguity, no need to use *this* to indicate class members 
     Debug.WriteLine(Foo + Bar); 
    } 
} 

En dehors de cela, certaines personnes préfèrent préfixe des appels de méthode internes (` this.Method() ') car il est plus évident que vous n'appelez aucune méthode externe, mais je ne trouve pas cela important.

Cela n'a absolument aucun effet sur le programme résultant étant plus ou moins efficace.

Questions connexes