Entwickler-Ecke

C# - Die Sprache - Get/Set mehrdimensionales Array


C#David - Di 05.06.18 09:41
Titel: Get/Set mehrdimensionales Array
Hey Leute,

ich möchte ein zweidimensionales/dreidimensionales Array in einer Get-/Set-Porperty verwenden. Egal wie ich dieses in den Return-Teil anspreche, es kommt immer eine Fehlermeldung. Ist das überhaupt möglich, wenn ja wie? Vielen Dank!


C#-Quelltext
1:
2:
3:
4:
5:
6:
public string [,,] information = new string [50,1,1];

public string[,,] Information
{
   get {return information; }           
}


Fehler: Mehrdeutigkeit zwischen "Test.Functionality.information". und "Test.Functionality.information(int,int,string)".
Auch wenn ich das Array im Return-Teil mit "get {return information(,,)}" anspreche, kommt die Fehlermeldung, dass ein Argument fehlt??

C#-Quelltext
1:
2:
3:
4:
public string[,,] Information
{
   get {return information(,,); }           
}


Moderiert von user profile iconTh69: C#-Tags hinzugefügt


Th69 - Di 05.06.18 09:59

Du hast noch eine Methode gleichen Namens in der Klasse definiert.


Palladin007 - Di 05.06.18 11:29

Nicht ganz, das Problem ist die Klassen-Variable, die heißt wie die Methode. Zwei Methoden sind möglich, solange die Parameter eine eindeutige Unterscheidung erlauben, bei Methoden und Variablen ist das aber nicht erlaubt.

Gleich mehrere Punkte fallen mir auf:


C#David - Di 05.06.18 14:49

Alles klar...vielen Dank für eure schnelle Hilfe!. Und ist es auch möglich ein mehrdimensionales Array bestehend aus Zeilen/Spalten mit unterschiedlichen Datentypen zu deklarieren/ initialisieren? Wenn ja, wie? Nochmals besten Dank!


Palladin007 - Di 05.06.18 15:10

Nein, geht nicht.

Um das zu erreichen brauchst Du einen Typ, der wiederum eine Liste vom nächsten Typ beinhaltet.
Das ist aber genau das, was Du haben willst, denn damit bist Du langfristig flexibler.

Außer natürlich, deine Daten lassen sich nur als dreidimensionales Array sinnvoll beschreiben, dann ist das egal.
Wenn Du aber z.B. in der zweiten Ebene Namen für das Array der dritten Ebene hast, könntest Du das z.B. als Dictionary abbilden.

Wirklich was darüber sagen kann man aber nicht, denn je nach Situation und Anwendungsfall sieht das völlig anders aus.