2016-04-23 20 views
0

Ich weiß, was this tut und warum es nützlich ist - this Frage hat einen großen Job, es zu erklären. In der gewählten Antwort verwendeten sie jedoch this, um auch Parameter zuzuordnen. Tut dasmit "this.field = value" vs "field = value"

private int aNumber; 

public void assignVal(int aNumber){ 
    this.aNumber = aNumber; 
} 

Haben Sie einen Vorteil gegenüber diesem?

private int aNumber; 

public void assignVal(int aVal){ 
    aNumber = aVal; 
} 
+2

Nein, es ist streng und genau das Gleiche. Der Unterschied zwischen den beiden ist eine Frage der Meinung. – Tunaki

+0

Ich sehe kein Leistungsproblem auf beiden. – Priyamal

+0

'this.' wird benutzt, um nur den ** COMPILER ** anzuweisen (der erzeugte Bytecode ist der selbe), was Sie ansprechen wollen, ich habe diese Frage geupdated, weil ich nicht verstehe, warum es -1 sein sollte, es ist eine gültige Frage. Der Vorteil der ersten Methode besteht darin, dass Sie die Benennung von Variablen konsistent halten. Eine gängige Praxis ist es, einen etwas anderen Namen wie 'number' und' Number' zu verwenden, um 'this.number' zu vermeiden. es ist eine schreckliche Praxis (die ich zugeben muss manchmal :)). – n00b

Antwort

1

Es gibt keine Leistung oder anderer offensichtlicher Vorteil für die Verwendung von this.aNumber vs. nur aNumber, anders als möglicherweise Klarheit, auf die Objektinstanz die aNumber gehört. Grundsätzlich kommt es auf Präferenz an.

Wenn nur aNumber verwendet wird, wird das Präfix this impliziert.

Ein möglicher Vorteil und ein Fall, in dem die Verwendung der this notwendig wird, ist, wenn Sie über eine Methode verfügen, die ein Argument an die Methode mit exakt demselben Namen wie eine Klasseninstanzvariable übergeben hat. In diesem Fall muss die Klasseninstanzvariable mit this vorangestellt werden, um die richtige Eigenschaft für den Zugriff auszuwählen.

Zum Beispiel, wenn Sie eine Klasse und Methode deklariert als:

class ThisExample{ 
    private int aNumber; 

    public void setANumber(int aNumber){ 
     //Here is is necessary to prefix with 'this' to clarify 
     //access to the class instance property 'aNumber' 
     this.aNumber = aNumber; 
    } 
} 
0

Es bedeutet, dass Sie bis zu 2 Variablennamen nicht herausfinden, die auf eine Sache beziehen. Es ist leicht lesbarer und macht es so, dass Ihre Variablen immer den Wert beschreiben.