Question

    

Cette question a déjà une réponse ici:

         

J'aimerais ajouter un opérateur à une classe. J'ai actuellement une méthode GetValue () que je voudrais remplacer par un opérateur [] .

class A
{
    private List<int> values = new List<int>();

    public int GetValue(int index)
    {
        return values[index];
    } 
}
Était-ce utile?

La solution

public int this[int key]
{
    get
    {
        return GetValue(key);
    }
    set
    {
        SetValue(key,value);
    }
}

Autres conseils

Je crois que c'est ce que vous recherchez:

Indexeurs (Guide de programmation en C #)

class SampleCollection<T>
{
    private T[] arr = new T[100];
    public T this[int i]
    {
        get
        {
            return arr[i];
        }
        set
        {
            arr[i] = value;
        }
    }
}

// This class shows how client code uses the indexer
class Program
{
    static void Main(string[] args)
    {
        SampleCollection<string> stringCollection = 
            new SampleCollection<string>();
        stringCollection[0] = "Hello, World";
        System.Console.WriteLine(stringCollection[0]);
    }
}

L'opérateur [] s'appelle un indexeur. Vous pouvez fournir aux indexeurs qui prennent un entier, une chaîne ou tout autre type que vous souhaitez utiliser comme clé. La syntaxe est simple et suit les mêmes principes que les accesseurs de propriétés.

Par exemple, dans votre cas où int est la clé ou l'index:

public int this[int index]
{
  get
  {
     return GetValue(index);
  }
}

Vous pouvez également ajouter un accesseur d'ensemble afin que l'indexeur devienne en lecture et en écriture plutôt qu'en lecture seule.

public int this[int index]
{
  get
  {
     return GetValue(index);
  }

  set
  {
    SetValue(index, value);
  }
}

Si vous souhaitez indexer en utilisant un type différent, il vous suffit de modifier la signature de l'indexeur.

public int this[string index]
...
public int this[int index]
{
    get
    {
        return values[index];
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top