如何在这种情况下,赋值运算符的工作?

问题描述 投票:3回答:4

它有助于注意到我很新的C#。

但是,考虑以下类:

class AllItems
{
    private readonly Database database;

    public AllItems(Database database)
    {
        this.database = database;
    }
}

我有以下问题:

  1. 在上面的例子中,我们赋予它被传递到private readonly Database databaseAllItemsthe值,是正确的?
  2. 难道问题,如果我换this.database = database左右,所以它看起来像database = this.database呢?
  3. 当我们说this.database,确实this参考数据库AllItems(Database database)或者它是指private readonly Database database
c# oop
4个回答
7
投票

在上面的例子中,我们分配私有只读数据库的数据库,被传递到AllItems类的价值,是正确的?

难道问题,如果我换this.database = database左右,所以它看起来像database = this.database呢?

是的,它会。什么你最终会做有分配正在传递的数据库参数是数据库字段(这将被默认null)的值。

当我们说this.database,这是否指的是数据库AllItems(数据库的数据库),或者它是指私人只读数据库的数据库?

this是当前类实例的简写,因此它是指数据库的私有只读成员。


2
投票
  1. 是的,它会的问题,那么你就分配this.database的值(在这种情况下null)到database
  2. this.database在这种情况下是指private readonly Database database;领域。我建议你阅读更多关于this关键字here

1
投票
  1. 是的,这是正确的,你可以在类的构造函数设置了只读字段,这是我们可以初始化只读域/属性的唯一地方。
  2. 它重要的是,交换做无意义的事情这一事实。当你这样做database = this.database,该database被分配到this.database的值,它是空在这种情况下,但不使用局部变量,将成为构造函数外不可用。
  3. 当然this.database引用类的私有字段。在这种情况下,私人领域和参数具有相同的名称,所以我们必须使用this以避免歧义。

1
投票

1)在上面的例子中,我们指定专用只读数据库的数据库,被传递到AllItems类的价值,是正确的?

是的,this被用来指那些在类声明的对象。

2)难道问题,如果我换this.database =数据库各地,所以它看起来像数据库= this.database呢?

是的,它会的,如果你掉它,然后分配,而不是在数据库中的值的声明在构造函数中的参数private readonly Database database,它会在`私人只读数据库数据库中的值赋给声明为构造函数的参数数据库。

3)当我们说this.database,这是否指的是在数据库中AllItems(数据库的数据库),或者它是指私人只读数据库的数据库?

this是用来指在类中声明的变量也称为因此全局变量是指private readonly Database database关键字。

也看看When do you use the "this" keyword?

© www.soinside.com 2019 - 2024. All rights reserved.