2017-04-25 15 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; 
    } 
} 

나는 처음 사용 '이'InstallationStep의 정의에서 생성자 체인있다, 그러나 내가 알아낼 수 없습니다 것으로 생각하는 방법 두 번째 '이 [이름]'인텔리 저 클래스 InstallationStepLibrary에 스코프 알려줍니다 (이되는 의미가 있습니다 ...) 유효한 구문이 될 수 있지만 그것은 있습니다. 그것은 사전에 범위 경우가 나을이 예제에서 두 번째 []의 목적은 무엇입니까?

...

+1

[name] = step;'은 인덱서를 사용합니다. –

+0

사전에 전용 수정 자, 인덱서가 있습니다.이 [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; 
    } 
}