C# Mehrere Objekte mit Array erzeugen

raven16

Lieutenant
Registriert
Nov. 2008
Beiträge
580
Hallo,

ich bin Programmieranfänger und möchte gerne in C# mehrere Objekte mit Hilfe eines Arrays erzeugen, aber irgendwie klappt mein Vorhaben noch nicht so ganz. Mein Quelltext sieht so aus:

Main-Class
Code:
static void Main (string[] args)
        {
            Console.Write ("Bitte wählen Sie die Anzahl der Spieler: ");
            int playeranz = Convert.ToInt32(Console.ReadLine ());
            Spieler[] sp = new Spieler[playeranz];
            for (int a = 1; a <= playeranz; a++)
            {
                Console.Write ("Spieler" + a + " Name: ");
                string input = Console.ReadLine ();
                sp[a] = new Spieler(input);
                Console.WriteLine ("Danke. Du heißt jetzt " + sp[a].name + ".");
            }
        }

Spieler-Class
Code:
class Spieler
    {
        public Spieler (string name)
        {
            this.name = name;
        }
        public string name;
    }

Mein Ziel ist es für jeden Spieler ein Objekt zu erzeugen damit ich Eigenschaften wie den Namen des Spielers oder Punktzahl etc. dort speichern kann.

Hab versucht im Internet danach zu suchen, habe aber keine für mich verständliche Lösung dafür gefunden. Ich hoffe ihr könnt mir ein paar Denkanschübe geben :)
 
Welchen Fehler bekommst du denn?

Einen kleinen Fehler hast du drin, denn Array-Indizes fangen mit 0 an, du fängst in der for-Schleife mit 1 an. Du müsstest also den Schleifenkopf ändern zu:

Code:
for (int a = 0; a < playeranz; a++)

Sonst sehe ich nichts auffälliges...


BTW: Ich habe leider keine Ahnung von C#, dafür aber etwas von der ähnlichen Sprache Java.
 
jo das is das einzige was net passt und wohl den fehler verursacht. du hast dann ein arrayzugriff bei 5 spielern auf array[5] und das gibts net ... array[0] bis array[4] gibt es!! also immer darauf achten das indizes bei 0 beginnen!
 
Hi...

Ich würde es mit Listen versuchen. Die haben die tollen Vorteil, dass sie dynamischen wachsen können und man kann sie mit .ToArray() ganz schnell als Array auswerten. (Wenn man das dann noch will)

Code:
List<Spieler> sp = New List<Spieler>();
sp.Add(New Spieler("XYZ"));
 
Zuletzt bearbeitet:
The_Silent_One schrieb:
Welchen Fehler bekommst du denn?

Einen kleinen Fehler hast du drin, denn Array-Indizes fangen mit 0 an, du fängst in der for-Schleife mit 1 an. Du müsstest also den Schleifenkopf ändern zu:

Code:
for (int a = 0; a < playeranz; a++)

Sonst sehe ich nichts auffälliges...


BTW: Ich habe leider keine Ahnung von C#, dafür aber etwas von der ähnlichen Sprache Java.
Upps kann doch sein weil der dann ja net die Null im Array nimmt
 
Hi,
würde auch Listen empfehlen sind sind wesentlich dynamischer ( unterschiedliche Datentypen etc. ).
Obwohl in dem Fall sowieso ne Klasse in frage kommen würde wenn du das noch weiter stricken willst :)
und am ende die Spieler tatsächlich ansprechen willst.
 
Danke für die Hilfe,

aber ich habe noch eine kleine Frage...

Wo liegt der Unterschied zwischen
Spieler[] sp = new Spieler[playeranz] und
sp[a] = new Spieler(input);

erzeugt das erste nur das Klassenarray und das zweite das Objekt an sich?
Hab das aus einem Openbook aber wurde noch nicht ganz schlau aus dem Quelltext
 
Wo liegt der Unterschied zwischen
Spieler[] sp = new Spieler[playeranz] und
sp[a] = new Spieler(input);

Mit dem ersten gibst du an, wie groß dein Aray werden soll. (Egal ob du es soweit füllst oder nicht).
Mit dem zweiten erstellst du eine Instanz des Spieler Objekts mit dem Namen.

;o)

Weiterhin viel Spass mit C#
 
Jungs jungs jungs, lasst ihn sich erstmal an Arrays herantasten, bevor Listen und andere Container kommen.

@raven:
Zuerst musst du sagen, dass du ein Array von Spieler-Objekten haben willst und angeben wie groß das ist, damit ausreichend Speicher dafür reserviert werden kann. Das machst du mit Spieler[] sp = new Spieler[playeranz]. Dann hast du mit dem Array einen Container, in den du die Objekte hineinlegen kannst. Da ist aber noch nichts drin (d.h. überall steht null). Den Container musst du noch mit Spieler-Objekten befüllen. Das machst du mit sp[a] = new Spieler(input)
 
Zurück
Oben