2016-04-23 21 views
0

私はthisが何をしているのか、それがなぜ有用かを知っています - this質問はそれを説明する素晴らしい仕事でした。しかし、選択された回答では、パラメータを割り当てるためにthisを使用しました。しています"this.field = value"と "field = value"を使用して

private int aNumber; 

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

これ以上の利点がありますか?

private int aNumber; 

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

いいえ、厳密に同じです。両者の違いは意見の問題です。 – Tunaki

+0

両方のパフォーマンス上の問題はありません。 – Priyamal

+0

'this.'は、** COMPILER **のみを指示するために使用されます(生成されるバイトコードは同じです)。なぜなら、それが有効な質問でなければならない理由は分かりません。最初の方法の利点は、変数の名前の一貫性を保つことです。よく使われるのは 'this.number'の使用を避けるために' number'や 'Number'のような少し異なる名前を使うことです。その恐ろしい練習(私は時々そうすることを認めます:))。 – n00b

答えて

1

への可能性が明瞭以外this.aNumber対だけaNumberを、使用のためのパフォーマンスや他の明らかな利点はaNumberが属するインスタンスオブジェクトはありません。基本的には好みになります。

ちょうどaNumberを使用する場合、this接頭辞が暗示されます。

可能な利点と、クラスインスタンス変数とまったく同じ名前を持つメソッドに引数が渡されているメソッドがある場合は、thisが必要になる場合があります。この場合、クラスインスタンス変数の前に接頭語「this」を付けると、アクセスするための適切なプロパティを「選択」する必要があります。それはあなたが一つのことを指す2人の変数名を把握する必要がないことを意味

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

:あなたが持っている場合

は例えば、クラスやメソッドは、と宣言しました。やや読みやすく、あなたの変数は常に値を記述しています。

関連する問題