2016-04-07 9 views
1

Ich benutze einen Indexer in einer Klasse in C#, aber ich frage mich, ob es standardmäßig eine Verknüpfung zum Erstellen von Indexern (wie zum Beispiel 'cw Registerkarte' für Console.WriteLine()). Weiß jemand, ob das existiert?Shortcut für Indexer in C#

Hier ist mein Code (mit Indexer) für die Klasse 'Person':

public string SurName { get; set; } 
public string FirstName { get; set; } 
public string Birthplace { get; set; } 

public string this[int index] 
{ 
    set 
    { 
     switch (index) 
     { 
      case 0: 
       this.SurName = value; 
       break; 
      case 1: 
       this.FirstName = value; 
       break; 
      case 2: 
       this.Birthplace = value; 
       break; 
      default: 
       throw new ArgumentOutOfRangeException("index"); 
     } 
    } 
    get 
    { 
     switch (index) 
     { 
      case 0: return this.SurName; 
      case 1: return this.FirstName; 
      case 2: return this.Birthplace; 
      default: 
       throw new ArgumentOutOfRangeException("index"); 
     } 
    } 
} 

Vielen Dank im Voraus!

-Jérémy

+3

Das Code-Snippet heißt Indexer, Sie können es verwenden, indem Sie ind + tab + tab oder sogar i + tab + tab (sobald es in der Intellisense markiert ist) –

Antwort

5

Von Visual C# Code Snippets

Indexer

Erstellt eine Indexer-Deklaration.

Innerhalb einer Klasse oder einer Struktur.

enter image description here

So geben ind und traf Tab zweimal. Dies erzeugt;

public object this[int index] 
{ 
    get { /* return the specified index here */ } 
    set { /* set the specified index to value here */ } 
} 

Allerdings gibt es auch ein Ausschnitt, der in der get füllt und setzen automatisch?

Hmm, ich habe dies vorher nicht versucht, aber ich öffnete propfull.snippet und es scheint, wie;

 .... 
     <Literal> 
      <ID>field</ID> 
      <ToolTip>The variable backing this property</ToolTip> 
      <Default>myVar</Default> 
     </Literal> 
    </Declarations> 
    <Code Language="csharp"><![CDATA[private $type$ $field$; 

public $type$ $property$ 
{ 
    get { return $field$;} 
    set { $field$ = value;} 
} 
.... 

Und indexer.snippet sieht aus wie;

.... 
.... 
<Code Language="csharp"><![CDATA[$access$ $type$ this[$indextype$ index] 
{ 
    get {$end$ /* return the specified index here */ } 
    set { /* set the specified index to value here */ } 
}]]> 
.... 

Also, wenn Sie <Literal><ID>field</ID>...</Literal> Teil in Ihrem indexer.snippet definieren, und wenn Sie es ändern Getter und Setter wie;

public object this[int index] 
{ 
    get { return $field$; } 
    set { $field$ = value; } 
} 

diese Macht Arbeit, wenn alles gut ist. Nebenbei, es funktioniert, es wird ein privates Feld zusätzlich zum Indexer erstellen. Diese Snippets sind in C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC#\Snippets\1033\Visual C# Ordner für Visual Studio 2012.

+0

Vielen Dank für Ihre Antwort. Ich wusste nicht, dass es ein "Code Snippet" genannt wurde. Gibt es aber auch ein Snippet, das den get ausfüllt und automatisch setzt? –

+0

@ Jérémy Ich habe _not_ nicht versucht, aber es sollte funktionieren. Meine Antwort wurde aktualisiert. –

+0

Danke für alles. Ich werde es ausprobieren. –