1

我在我将从事的项目中偶然发现了这一点:

public int? OrgId
{
    get { return base["OrgId"] as int?; }
    set { base["OrgId"] = value; }
}

单击 OrgId,Resharper 将我带到此签名的方法:

public override object this[string propertyName] { get; set; }

base[""] 是做什么的?覆盖的 this[] 部分是什么意思?在 Google 上找不到任何有意义的内容。

4

2 回答 2

6

this[]是一个索引器:Indexers (C# Programming Guide)

base[]运行base类中定义的索引器。当索引器在子类中被覆盖并且您想使用在base类中定义的索引器时,可以使用它。

于 2013-08-28T18:59:41.083 回答
5

这意味着基类有一个索引器,并且该索引器接受一个字符串作为可能的参数。我不知道那个索引器的作用是在基类中。\

在中,get您实际上是从该索引器中提取的,而在中,set您正在访问set该索引器。看起来它只是一个包装器,因此此类的使用者不必使用索引器,或者它是他们不必具有内部类属性的实现。

我希望不是后者,因为如果是的话,他们可以编写更少的代码,例如:

public int? OrgId { get; set; }
于 2013-08-28T18:59:25.833 回答