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?
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
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
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