Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Property für Array Member
dirkil
myCSharp.de - Member



Dabei seit:
Beiträge: 23

Themenstarter:

Property für Array Member

beantworten | zitieren | melden

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?
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
VizOne
myCSharp.de - Member

Avatar #avatar-1563.gif


Dabei seit:
Beiträge: 1.373

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
dirkil
myCSharp.de - Member



Dabei seit:
Beiträge: 23

Themenstarter:

beantworten | zitieren | melden

Wow! Das nenne ich schnell. Vielen Dank für die prompte Hilfe!
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers