C # - Indexer bei seiner sinnvollen Anwendung

7

Ich verstehe, Indexer ermöglichen uns den Zugriff auf eine Sammlung innerhalb einer Klasse als ob die Klasse selbst war ein Array .

Angenommen, wir entwickeln ein Projekt, wo passen wir die tatsächliche praktische Verwendung solcher Indexer an?

    
Marcel Gosselin 19.11.2009, 17:09
quelle

6 Antworten

8

Betrachten Sie fast alle Auflistungsklassen im Framework als Beispiel. Wenn ich ein Objekt aus einer Hashtabelle in einer Sprache ohne Indexer abrufen würde, würde ich die Syntax wie folgt verwenden:

%Vor%

wo ein Indexer eine etwas einfachere Syntax zulässt:

%Vor%

(absichtlich Ignorieren von Tipp- / Generika-Problemen in den obigen Beispielen)

    
Michael Petrotta 19.11.2009, 17:14
quelle
5

Sie haben mehrere Beispiele in den generischen Sammlungen des Frameworks selbst. Das Wörterbuch ist ein ziemlich gutes Beispiel:

%Vor%

Das wäre viel eleganter und einfacher als

%Vor%     
Jorge Córdoba 19.11.2009 17:14
quelle
3
  

indexer ermöglicht uns den Zugriff auf a   Sammlung innerhalb einer Klasse als ob   Die Klasse selbst war ein Array.

Sie können zwar eine Klasse schreiben, die nicht eine permanente Sammlung von Elementen in sich hat, aber bei der Indizierung dynamisch einen berechneten Wert bereitstellen können. Die Daten können in Echtzeit aus dem Internet oder einer anderen Datenquelle gesammelt werden - ich stelle mir beispielsweise eine Klasse SearchResults vor, mit der ich Google-Suchergebnisse für eine Zeichenfolge wie diese erhalten könnte: Console.out.WriteLine(SearchResults["Stackoverflow"].count) . Es sammelt die Daten nur, wenn ich danach frage und eine Sammlung der abgerufenen Elemente zurückgebe.

    
luvieere 19.11.2009 17:41
quelle
2

Angenommen, Sie entwickeln Microsoft .NET Framework für andere Entwickler (was wirklich ein "reales Projekt" ist). Sie müssen eine Klasse schreiben, die wie ein Array funktioniert, aber die Größenänderung dynamisch unterstützt (die Klasse List<T> ). Ohne einen Indexer könnten Sie zwei Methoden zum Abrufen und Festlegen von Elementen schreiben:

%Vor%

Angenommen, ein Benutzer Ihrer Bibliothek möchte das zweite Element inkrementieren. Sie muss schreiben:

%Vor%

Mit einem Indexer ist die Syntax viel einfacher, lesbarer und einfacher zu verstehen:

%Vor%

(ähnliche Argumente gelten für Dinge wie Dictionary<TKey,TValue> ...)

    
Mehrdad Afshari 19.11.2009 17:15
quelle
1

Nun, die offensichtliche Anwendung für die Verwendung von Indexern ist ... (Überraschung) Sammlungen.

Wie:

  • Listen:

    %Vor%
  • Hash-Tabellen:

    %Vor%

Denken Sie daran, dass Indexer nicht auf ganzzahlige Argumente beschränkt sind.

    
Joey 19.11.2009 17:14
quelle
0

Wenn die Sammlung sortiert ist, können das erste und das letzte Element nützlich sein, um ein minimales oder maximales Element zu erhalten.

In ASP.Net gibt es mehrere Objekte, die Indexer wie Application, Session und Request verwenden.

    
JB King 19.11.2009 17:16
quelle

Tags und Links