有助于注意我对c#很新。
但请考虑以下课程:
class AllItems
{
private readonly Database database;
public AllItems(Database database)
{
this.database = database;
}
}
我有以下问题:
在上面的示例中,我们为private readonly Database database
分配了传递给AllItems
类的值,这是正确的吗?
如果我更换了this.database = database
,那么它会变成database = this.database
吗?
我们在说this.database
时,this
是指AllItems(Database database)
中的数据库还是引用private readonly Database database
?
答案 0 :(得分:7)
在上面的例子中,我们为私有只读数据库数据库分配了传递给AllItems类的值,这是正确的吗?
是
如果我交换了
this.database = database
,那么它是否重要,所以它看起来像database = this.database
?
是的,它会的。您最终要做的是将传入的数据库参数分配为数据库字段的值(默认情况下为null
)。
我们在说
this.database
,这是指AllItems(数据库数据库)中的数据库还是引用私有只读数据库数据库?
this
是当前类实例的简写,因此它引用数据库的私有只读成员。
答案 1 :(得分:2)
this.database
(在本例中为null
)的值分配到database
。 this.database
指的是private readonly Database database;
字段。我建议您详细了解this
关键字here。答案 2 :(得分:1)
是的,这是正确的,你可以在类构造函数中设置一个只读字段,这是我们可以初始化只读字段/属性的唯一地方。
事实上,交换做了一件毫无意义的事情。执行此操作database = this.database
时,database
被赋予this.database
的值,在这种情况下为null,但该局部变量未使用,并且在构造函数外部将变为不可用。 / p>
this.database
当然会引用您班级的私人字段。在这种情况下,私有字段和参数具有相同的名称,因此我们必须使用this
来避免歧义。
答案 3 :(得分:1)
1)在上面的例子中,我们正在为私有只读数据库数据库分配传递给AllItems类的值,这是正确的吗?
是的,this
用于引用在类中声明的对象。
2)如果我交换了this.database =数据库,那么它看起来像是database = this.database吗?
是的,如果你交换它,而不是将构造函数中声明为参数的数据库中的值赋给private readonly Database database
,它会将`private readonly Database database中的值赋给声明为a的数据库构造函数中的参数。
3)我们在说这个数据库时,这是指AllItems(数据库数据库)中的数据库还是引用私有只读数据库数据库?
this
是一个关键字,用于指代在类中声明的变量,也称为全局变量,因此它引用private readonly Database database
。