2013-11-24 107 views
3

它有助于说明我对c#很陌生。值分配操作符在这种情况下如何工作?

但考虑下面的类:

class AllItems 
{ 
    private readonly Database database; 

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

我有以下问题:

  1. 在上面的例子中,我们分配private readonly Database database它被传递到AllItems类的价值,是正确的?

  2. 如果我换了this.database = database左右,那看起来好像是database = this.database呢?

  3. 当我们说this.database,并this参考数据库AllItems(Database database)或者它是指private readonly Database database

回答

7

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

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

是的,它会,你到底是什么了做有分配数据库参数传递的是数据库(这将是null默认)值。

我们在说什么this.database,这是指AllItems(数据库数据库)中的数据库还是它指私人只读数据库数据库?

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

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

是的,我的意思是指领域,而不是参数的构造函数传递。我纠正了我的答案 –

1
  1. 是的,它是正确的,你可以在类的构造函数设置了只读字段,这是我们可以初始化只读域/属性的唯一地方。

  2. 重要的是交换没有意义。当你这样做时database = this.databasedatabase被赋值为this.database这个值在这种情况下为null,但是这个局部变量没有被使用,并且在构造函数之外将变得不可用。

  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?

相关问题