Frage

    

Diese Frage bereits eine Antwort hier:

         

Ich möchte einen Operator zu einer Klasse hinzuzufügen. Im Moment habe ich eine GetValue() Methode, die ich mit einem [] Operator ersetzen möchte.

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

    public int GetValue(int index)
    {
        return values[index];
    } 
}
War es hilfreich?

Lösung

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

Andere Tipps

Ich glaube, das ist das, was Sie suchen:

Indexer (C # -Programmierhandbuch)

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]);
    }
}

Der Operator [] wird ein Indexer bezeichnet. Sie können Indexer schaffen, die eine ganze Zahl nehmen, eine Zeichenfolge, oder jede andere Art Sie als Schlüssel verwenden möchten. Die Syntax ist einfach, nach den gleichen Prinzipien wie Eigenschaftenaccessoren.

Zum Beispiel, in Ihrem Fall, in dem ein int ist der Schlüssel oder Index:

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

Sie können auch eine Reihe Accessor hinzufügen, so dass der Indexer gelesen wird und schreiben, anstatt nur schreibgeschützt ist.

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

  set
  {
    SetValue(index, value);
  }
}

Wenn Sie indizieren möchten eine andere Art verwenden, können Sie nur die Unterschrift des Indexer ändern.

public int this[string index]
...
public int this[int index]
{
    get
    {
        return values[index];
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top