-1

想知道这两者有没有区别:

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

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

如果您切换等号“=”的左侧和右侧,它会改变含义吗?

4

5 回答 5

6

是的。意义肯定会改变。一个分配weightto的值this.weight,另一个分配this.weightto的值weight

于 2013-01-25T19:09:33.613 回答
3

后者将分配存储在您的类weight字段中的值并将其分配给weight传递给您的方法的参数。

前者会适得其反。

基本上,this.weight指的是您的类的weight字段,其中weight指的是方法的参数。如果方法范围内没有weight变量,您仍然可以使用weight来引用类字段。

于 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

是的。它们不一样。 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 回答
0

在 C# 中,single=赋值运算符- 它将右侧表达式的值分配给左侧的变量。既然如此,顺序当然很重要。

如果您正在寻找逻辑相等比较,您将使用运算符-==当然,在您提供的代码中这样做是没有意义的:该语句将返回 truefalse作为其结果,然后您需要分配它结果或用它做其他有用的事情。

于 2013-01-25T19:13:45.980 回答