Announcement

Collapse
No announcement yet.

Zweidimensionales Array verschieben

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zweidimensionales Array verschieben

    Hey!
    Ich habe ein zweidimensionales Array. In diesem Array gibt es Spalten die ich raus haben möchte. Entweder durch löschen oder (einfacher?) durch verschieben.
    Leider ist mir nicht bewusst, wie ich das anstelle. Könnt ihr mir weiterhelfen?

    Grüße

  • #2
    Hallo,

    wenns unbedingt ein 2D-Array sein muss und nicht zB eine List<T>* dann ein temporäres Array erstellen und umkopieren.

    * hier kann mit Remove ein Element entfernt werden

    Das Umkopieren kannst du dir auch von der List<int[]> erledigen lassen wenn diese aus dem 2D-Array erstellt wird, dann mit Remove die "Spalten" entfernen und wieder zurück zum 2D-Array.

    Aber ehrlich gesagt würde ich eine andere Datenstruktur als den 2D-Array verwenden.


    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Muss ich Günther recht geben. Arrays sind wirklich nur für sehr sehr große Datenmengen erforderlich. Alles andere würde ich über die generische List<T> machen. Diese ist sehr viel flexibler und auch nur ein klein wenig langsamer.

      Comment


      • #4
        Hi!

        Habs jetzt mal mit
        Code:
        List<List<object>> list = new List<List<object>>();
        gelöst, sieht allerdings nicht ganz so schön aus.
        Vor allem das Kopieren von einem Array, zu Listen und wieder zurück...

        Gerade hab ichs mit einem temporären Array und dem umkopieren versucht. Irgendwie will das aber nicht so recht funktionieren, dass ich die Spalten raus bekomme. Habt ihr vllt. einen Link zu einem Code-Snippet, wo das mal gemacht wird, damit ich sehen kann woran es bei mir liegen könnte?

        Gruß und gute Nacht

        Comment


        • #5
          Das Problem ist eben, dass die Struktur eines Arrays einmal dynamisch festgelegt wird. Nimmt man jetzt Werte aus einem Array heraus muss man alle nachfolgenden Werte auch umstrukturieren.
          Deswegen: Wenn es nicht unbedingt ein Array sein muss -> Finger weg!

          Wenn nach aussen hin keiner Element hinzufügen oder wegnehmen darf einfach die interne IList in eine ReadOnlyCollection umwandeln

          So in etwa:

          [highlight=c#]
          public class MyClass
          {
          private IList<String> _listeMeinerElemente;

          public ReadOnlyCollectionClass()
          {
          _listeMeinerElemente = new List<String> { "Hallo", "Welt!" };
          }

          public ReadOnlyCollection<String> ListeMeinerElemente { get { return new ReadOnlyCollection<String>(_listeMeinerElemente); } }
          }
          [/highlight]
          Zuletzt editiert von fanderlf; 20.05.2010, 15:10.

          Comment


          • #6
            Hallo fanderlf,

            die ReadOnlyCollection gibts bereits im Framework Aber trotzdem schön implementiert.

            mfG Gü
            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

            Comment


            • #7
              Jaja klar... ich benutze die ja auch Ich wollte ihm nur demonstrieren wie man eine List<T> in einer Klasse so verwendet, dass diese Liste nur von der Klasse selbst bearbeitet werden kann. Von aussen kann ich so keine Elemente hinzufügen
              Der Klassenname ist vielleicht blöd gewählt
              Zuletzt editiert von fanderlf; 20.05.2010, 17:33.

              Comment


              • #8
                OK - wenn du den Hinweis auf die ReadOnlyCollection<T> gleich gegeben hättest wäre deine Antwort perfekt gewesen...

                mfG Gü
                "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                Comment

                Working...
                X