在这个例子中第二个[]的目的是什么?

时间:2017-04-25 16:19:10

标签: c# this intellisense indexer constructor-chaining

public abstract class InstallationStepLibrary
{
    private Dictionary<string, InstallationStep> DictSteps;

    protected InstallationStepLibrary()
    {
        DictSteps = new Dictionary<string, InstallationStep>();
    }

    public InstallationStep this[string s]
    {
        get
        {
            return DictSteps[s];
        }
        set
        {
            DictSteps[s] = value;
        }
    }

    protected void NewStep(string name, InstallationStep step)
    {
        this[name] = step;
    }
}

我怀疑第一次使用'this'是从InstallationStep的定义中链接构造函数,但我无法弄清楚第二个'this [name]'(intellisense告诉我类的范围{ {1}},这是有道理的...)可以是有效的语法,但确实如此。

如果它限定为字典......

1 个答案:

答案 0 :(得分:1)

第二个[]或:

protected void NewStep(string name, InstallationStep step)
{
    this[name] = step;
}

只需调用类中定义的索引器即可。如果调用者刚刚使用它,它将工作相同:

installationStepLibrary[name] = step;

在类中定义的索引器是:

public InstallationStep this[string s]
{
    get
    {
        return DictSteps[s];
    }
    set
    {
        DictSteps[s] = value;
    }
}