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

What is the purpose of the second [] in this example?

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 告诉我作用域是class InstallationStepLibrary,这是有道理的...)可以是有效的语法,但确实如此。

如果它的范围是词典,那将是有意义的...

第二个[]或:

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

只调用class中定义的索引器。如果调用者只是使用它会工作相同:

installationStepLibrary[name] = step;

其中 class 中定义的索引器是:

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