Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在这种情况下,赋值运算符是如何工作的?_C#_Oop - Fatal编程技术网

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

C# 在这种情况下,赋值运算符是如何工作的?,c#,oop,C#,Oop,请注意,我对c#很陌生 但请考虑以下类: class AllItems { private readonly Database database; public AllItems(Database database) { this.database = database; } } 我有以下问题: 在上面的示例中,我们分配了私有只读数据库传递到AllItems类中的值,对吗 如果我交换了this.database=database,使它看起来像d

请注意,我对c#很陌生

但请考虑以下类:

class AllItems
{
    private readonly Database database;

    public AllItems(Database database)
    {
        this.database = database;
    }
}
我有以下问题:

  • 在上面的示例中,我们分配了
    私有只读数据库
    传递到
    AllItems
    类中的值,对吗

  • 如果我交换了
    this.database=database
    ,使它看起来像
    database=this.database
    ,这有关系吗

  • 当我们说
    this.database
    时,
    this
    是指
    AllItems(database database)
    中的数据库还是指
    私有只读数据库

  • 是的,这很重要,然后将
    this.database
    (在本例中为
    null
    )的值分配到
    database
  • this.database
    在本例中指的是
    私有只读数据库字段。我建议您阅读更多关于
    这个
    关键字的信息
  • 在上面的示例中,我们为私有只读数据库分配了传入AllItems类的值,对吗

    如果我交换了
    this.database=database
    ,使它看起来像
    database=this.database
    ,这有关系吗

    是的,会的。您最终要做的是将传入的数据库参数指定为数据库字段的值(默认情况下为
    null

    当我们说this.database时,它是指AllItems(数据库数据库)中的数据库还是指私有只读数据库

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

  • 是的,这是正确的,您可以在类构造函数中设置只读字段,这是我们可以初始化只读字段/属性的唯一位置

  • 重要的是,交换做了一件毫无意义的事情。当您执行此操作时,
    database=this.database
    database
    被分配给
    this.database
    的值,该值在本例中为空,但不使用该局部变量,并且在构造函数外部将变得不可用

  • this.database
    当然引用了类的私有字段。在这种情况下,私有字段和参数具有相同的名称,因此我们必须使用
    this
    ,以避免歧义

  • 1) 在上面的示例中,我们为私有只读数据库分配了传递到AllItems类的值,对吗

    是,
    用于引用类中声明的对象

    2) 如果我交换了this.database=database,使它看起来像database=this.database,这有关系吗

    是的,如果您交换它,那么它将不会将构造函数中声明为参数的数据库中的值分配给
    私有只读数据库
    ,而是将`private readonly database database中的值分配给构造函数中声明为参数的数据库

    3) 这里我们说的是this.database,它是指AllItems(数据库数据库)中的数据库还是指私有只读数据库

    是一个关键字,用于引用类中声明的变量,也称为全局变量,因此它引用的是
    专用只读数据库


    再看一看

    是的,我的意思是它指的是该字段,而不是在构造函数中传递的参数。我已经改正了我的答案