2017-04-25 12 views
0
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; 
    } 
} 

私は、クラスInstallationStepLibraryにスコープ私に語ったインテリセンス(「この」InstallationStepの定義からコンストラクタを連鎖された、しかし、私はどのように2番目の「この[名前]を」把握することはできませんを最初に使用すると思われます意味があります...)は有効な構文である可能性があります。それは辞書にスコープ場合、それは理にかなってこの例の2番目の[]の目的は何ですか?

...

+1

[name] = step; 'はインデクサを使います。 –

+0

ディクショナリにはプライベートモディファイア、インデクサ 'this [string s]'がアクセスできます。 – Ryan

答えて

1

[]か:

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

ちょうどクラスで定義されてインデクサを呼び出します。呼び出し側がちょうど使用した場合、それは同じように動作します:

installationStepLibrary[name] = step; 

クラスで定義されインデクサである場合: `パブリックInstallationStepこの[文字列s]`と `この:これは、インデクサーがある

public InstallationStep this[string s] 
{ 
    get 
    { 
     return DictSteps[s]; 
    } 
    set 
    { 
     DictSteps[s] = value; 
    } 
} 
関連する問題