Laden...

Property für Array Member

Erstellt von dirkil vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.154 Views
D
dirkil Themenstarter:in
23 Beiträge seit 2006
vor 17 Jahren
Property für Array Member

Ich probiere schon eine ganze Weile rum, mehrere Arrays per Property auszulesen. Geht das nur mit einem Array und mittels this?

Beispiel:


public class MyClass
{
  public MyClass()
  {}

  private string _name:
  public string Name
  {
    get { return _name; }
    set { _name = value; }
  }

  private int[] _x = new int[10];
  private int[] _y = new int[10];


Wie kann ich Properties X und Y haben, so daß ich beispielsweise so zugreifen könnte?


MyClass m = new MyClass();
System.Console.WriteLine( Convert.ToString(m.X[2]) );

Ist sowas möglich? Wenn ja, wie lautet die genaue Syntax?

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo dirkil,


private int[] _x = new int[10];
public int[] X
{
   get { return _x; }
   set { _x = value; } // Meist ist der Setter überflüssig, also weglassen
}

herbivore

1.373 Beiträge seit 2004
vor 17 Jahren

Die von herbivore angesprochene Methode ist natürlich ggf. nicht ganz optimal (was nicht an herbivore liegt, sondern in der Natur der Sache), da du nun keinen direkte Kontrolle über das Lesen und Schreiben der Array-Elemente hast. Die Kontrolle liegt jetzt im zurückgegeben Array. Leider unterstützt C# bis auf "this" keine indizierten Properties (VB.NET hingegen schon), sodass einem nicht viel anderes übrig bleibt außer das angesprochene Array oder ein Objekt einer selbstgeschriebenen Klasse, welches dann einen this-getter (und ggf. setter) implementiert, zurückzugeben.

Grüße,
Andre

D
dirkil Themenstarter:in
23 Beiträge seit 2006
vor 17 Jahren

Wow! Das nenne ich schnell. Vielen Dank für die prompte Hilfe!

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo VizOne,

ich habe den Code ja auch wertfrei geschrieben. 🙂 Er tut was er hier tun soll. Und die Kontrolle braucht man ja gar nicht immer.

Leider gibt es keine Standard-Collections, die Events bei der Veränderung feuern, dass könnte man gut gebauchen, wenn man die Kontroll haben will oder muss.

herbivore