2009-08-20 7 views
0

Um einen Indexer haben wir das folgende Format verwenden:C# Indexer Verwendung

class ClassName 
{ 
    DataType[] ArrayName = new DataType[Length]; 

    public DataType this[int i] 
    { 
     get { return ArrayName[i]; } 
    } 
} 

Aus Gründen der Einfachheit ich das Format verwendet, obwohl wir auch für eine benutzerdefinierte Indexer gehen kann. Nach meinem Verständnis halten wir ein property-Array, das indiziert ist.

Meine Frage ist:

  1. Ist es ein Templat-Eigenschaft?
  2. Wann und wo könnten wir mit diesem Indexer Code-Optimierung auf hohem Niveau erreichen?
+3

Diese höchst dominierende Frage hat einen meteorisch hyperbolischen Titel. – Jimmy

+0

Es war ein perfekt cromulent Titel. – user7116

+0

Geez aufleuchten. Die Leute sind hier, um Fragen zu stellen und zu lernen. –

Antwort

2

Es geht nicht um Code-Optimierung.
Sie könnten eine Methode in Ihre Klasse schreiben, die Ihnen das Element aus der Sammlung, die es enthält, entnehmen kann.

z.B.

public DataType GetItemByIndex(int i) 
{ 
} 

Indexer sind in gewisser Weise „syntaktischer Zucker“, Benutzer die Instanz als eine Anordnung oder Sammlung behandeln zu lassen.

1

Dies ist kein Templat- Eigenschaft ist es eine parameterful Eigenschaft - das ist eine Eigenschaft, die einen Parameter Argument akzeptiert.

Dies läuft auf eine get_Item(Int32)-Methode anstelle einer get_Item()-Methode hinaus, die normalerweise vom Compiler anstelle einer parameterlosen Eigenschaft ausgegeben würde. Dies eröffnet keine großen Möglichkeiten zur Optimierung.