2009-08-20 6 views
0

Pour avoir un indexeur, nous utilisons le format suivant:C# Indexer Utilisation

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

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

Par souci de simplicité je le format, même si nous pouvons aller pour un indexeur personnalisé aussi. D'après ce que je crois comprendre, nous conservons un tableau de propriétés indexé.

Ma question est:

  1. Est-ce un bien basé sur un modèle?
  2. Quand et où pourrions-nous réaliser une optimisation de code élevée en utilisant cet indexeur?
+3

cette question suprêmement dominante a un titre météorologiquement hyperbolique. – Jimmy

+0

C'était un titre parfaitement cromulent. – user7116

+0

Geez alléger. Les gens sont ici pour poser des questions et apprendre. –

Répondre

2

Il ne s'agit pas d'optimisation de code.
Vous pouvez écrire une méthode dans votre classe qui vous permet d'obtenir l'élément de la collection qu'il contient.

par exemple.

public DataType GetItemByIndex(int i) 
{ 
} 

indexeurs sont en quelque sorte, « sucre syntaxique », pour permettre aux utilisateurs de traiter l'instance comme un tableau ou d'une collection.

1

Ce n'est pas un propriété basé sur un modèle, il est un parameterful propriété - qui est une propriété qui accepte un argument de paramètre.

Cela se résume simplement à une méthode get_Item(Int32) à la place d'une méthode get_Item() qui serait normalement émise par le compilateur à la place d'une propriété sans paramètre. En tant que tel, cela n'ouvre pas beaucoup de possibilités d'optimisation.