C# Arraybefüllung per Schleife?

  • Hallo,
    ich habe versucht in einer Schleife ein Array beliebig zu befüllen. Doch dies scheint mit C# anscheinend nicht möglich zu sein. Da ich mir dies jedoch nicht vorstellen kann, wollte ich hier noch einmal fragen.

    Mein Versuch:

    Dies geht jedoch nicht und es kommen mehre Fehlermeldungen.

    Zitat

    Eine lokale Variable mit dem Namen "IntegerArray" kann in diesem Bereich nicht deklariert werden, weil dadurch "IntegerArray" eine andere Bedeutung erhalten würde, was bereits im Bereich "übergeordnet oder aktuell" in anderer Bedeutung verwendet wird.

    Eine implizite Konvertierung vom Typ "int" in "int[]" ist nicht möglich.


    So bekomme ich erwartungsgemäß eine 5 zurück:

    Code
    int[] IntegerArray = { 0, 1, 22, 4, 5 };
    Console.WriteLine(IntegerArray.Length);
    Console.ReadLine();

    Und in einem Tutorial habe ich gelesen, dass man dem Array auch gleich sagen muss, wie viele Elemente es haben soll "int[] IntegerArray = new int[10];", es sei denn man verwendet obige Methode... mit " = { 0, 1, 22, 4, 5 };".

    Kann man also wirklich ein Array nicht dynmaisch befüllen o.O?

    Edit:
    Die Arrays werden sichtlich am (new) zu erkennen als Objekte erstellt. Hier scheint es keine andere Möglichkeit zu geben. Jedoch kann man die Arrayelementezahl nachträglich ändern. Hier ein Beispiel:

    Nach wie vor muss man hier natürlich wissen, wie viele Elemente ein Array braucht/hat...

    2 Mal editiert, zuletzt von Darkxor (4. Oktober 2009 um 01:42)

  • Ja das ist "leider" so. Kenn das verhalten zumindest von Java.

    Bei deiner "erweiterung" wird das alte Array aber nicht erweitert, sondern ein neues angelegt, das alte wird überschrieben.

    Genau so kann man später auch ein Array erweitern, bin in dem Zusammenhang selbst leider noch nicht vorgedrungen, aber es sollte mit Referenzen möglich sein.

    Sprich eine (eigene) Funktion aufrufen wie "add_to_array(array, 1)", in der Funktion wird die länge des übergegebenen Arrays ausgelesen, ein neues Array angelegt der selben größe +1 mit, werte übergeben und neuer wert am ende (zum Beispiel) reingesetzt.


    Persönlich hatte ich so was ähnliches in AutoIT gehabt, dort gab es bereits so eine Funktion. Also hab ich ein leeres Array angelegt und in der Schleife "addTo" verwendet ;)

  • Was soll damit sein? Wenn du vorher 10 plätze reserviert hast gibts da eben keine Probleme.

    C# hab ich leider nie benutzt, bei Java weiß ich, dass der Compiler motzt und das Script beendet wenn du nicht genug platz reserviert ist...

    /edit:
    hah, ich hatte recht :D http://www.tutorials.de/forum/c-c/2306…rte-laenge.html
    Es gibt auch in C# eine Add funktion ^^ und die heißt sogar ganz einfach add xP

    Also was du haben willst:

    Code
    for (int i = 0; i < 10; i++)
    {
        myarray.Add(1);
    }

    Einmal editiert, zuletzt von Grevas (10. Oktober 2009 um 13:17)