-1

2つに違いがあるかどうか疑問に思っています:

public Bee (double weight) 
    {
        this.weight = weight; 

public Bee (double weight) 
    {
        weight = this.weight; 

等号の「=」の左右を入れ替えると意味が変わるのですか?

4

5 に答える 5

6

はい。意味が確実に変わります。1 つは to の値を割り当て、もう 1 つはweighttoの値this.weightを割り当てます。this.weightweight

于 2013-01-25T19:09:33.613 に答える
3

後者は、クラスのweightフィールドに格納されている値を割り当て、それをweightメソッドに渡された引数に割り当てます。

前者はその逆になります。

基本的に、メソッドの引数を参照this.weightするクラスのweightフィールドを参照します。メソッドのスコープに変数weightがない場合でも、クラス フィールドを参照するために使用できます。weightweight

于 2013-01-25T19:11:11.250 に答える
1

はい。thisキーワードは、変数がクラス インスタンス変数であることを示します。キーワードがないthis場合は、ローカルの重みパラメータが使用されます。

次の例では、コンストラクターに渡されたパラメーターを同じ名前のクラス インスタンス変数に割り当てます。

クラスの例:

public class Bee
{
    double weight;

    public Bee(double weight)
    {
        this.weight = weight;
    }
}
于 2013-01-25T19:11:19.283 に答える
0

C# では、single=代入演算子です。右側の式の値を左側の変数に代入します。その場合、順序は確かに重要です。

論理的な等値比較を探している場合は==演算子を使用します。もちろん、提供したコードでこれを行うのは無意味です。ステートメントは結果としてorを返すため、それを 割り当てる必要があります。結果を出すか、それを使って何か他のことをします。truefalse

于 2013-01-25T19:13:45.980 に答える
0

はい。それらは違う。 this.weightクラスのプロパティまたは変数をweight参照しており、メソッドのパラメーターを参照しています。

例を見てみましょう:

public class Bee
{
   private double weight;      

   public Bee (double weight)
   {
      this.weight = weight;
   }
}

関数のパラメーターの重みを変更したい場合は、次のようにします。

public class Bee
{
   private double weight;      

   public Bee (double initialWeight)
   {
      this.weight = initialWeight;
   }
}

内部変数の重みを変更したい場合は、次のようにします。

public class Bee
{
   private double internalWeight;      

   public Bee (double weight)
   {
      this.internalWeight = weight;
   }
}

ご覧のとおり、どちらの変更でもここで何が起こっているかがより明確になり、各呼び出しで何が設定されているかを理解するのにも役立ちます。

于 2013-01-25T19:12:04.093 に答える