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

Ich vermute, dass der erste Einsatz von ‚this‘ ist Konstrukteure aus der Definition von InstallationStep Chaining, aber ich kann nicht herausfinden, wie der zweite ‚dieser [name]‘ (die Intellisense mir InstallationStepLibrary Scopes die Klasse erzählen, die macht Sinn ...) kann gültige Syntax sein, aber es ist.Was ist der Zweck des zweiten [] in diesem Beispiel?

Es wäre sinnvoll, wenn es um die Umsetzung scoped ...

+1

Dies ist ein Indexer: 'public InstallationStep diese [string s]' und 'diese [name] = step; 'benutzt den Indexer. –

+0

Das Wörterbuch hat einen privaten Modifikator, Indexer 'this [string s]' bietet Zugriff darauf. – Ryan

Antwort

1

Die zweite [] oder:

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

ruft einfach die Indexer in der Klasse definiert. Es würde die gleiche Arbeit, wenn der Anrufer gerade verwendet:

installationStepLibrary[name] = step; 

Wo der Indexer in der Klasse definiert ist:

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