我在将要开展的项目中偶然发现了这一点:
public int? OrgId
{
get { return base["OrgId"] as int?; }
set { base["OrgId"] = value; }
}
点击OrgId,Resharper带我去看这个签名的方法:
public override object this[string propertyName] { get; set; }
基地[“”]做什么?什么意思是覆盖的这个[]部分?在Google上找不到任何有意义的内容。
答案 0 :(得分:6)
this[]
是一个索引器:Indexers (C# Programming Guide)。
base[]
运行base
类中定义的索引器。当在子类中重写索引器并且您想使用base
类中定义的索引器时,可以使用它。
答案 1 :(得分:5)
这意味着基类有一个索引器,索引器接受一个字符串作为可能的参数。我不知道那个索引器的作用是在基类中。\
在get
你真正从该索引器中拉出来,而在set
中你正在点击该索引器的set
。它似乎只是一个包装器,因此这个类的使用者不必使用索引器或它是一个不必具有内部类属性的实现。
我希望不是后者,因为如果是这样的话,他们可以用类似的东西编写更少的代码:
public int? OrgId { get; set; }