这个例子中第二个 [] 的目的是什么?
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;
}
}
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;
}
}