Wenn ich Ihr Problem richtig verstehe:
class MyClass
{
public int ObjectNumber { get; set; }
public string SomeVariable { get; set; }
public string AnotherVariable { get; set; }
}
// You should use keyboard input value for this
int objectsToCreate = 10;
// Create an array to hold all your objects
MyClass[] myObjects = new MyClass[objectsToCreate];
for (int i = 0; i < objectsToCreate; i++)
{
// Instantiate a new object, set it's number and
// some other properties
myObjects[i] = new MyClass()
{
ObjectNumber = i + 1,
SomeVariable = "SomeValue",
AnotherVariable = "AnotherValue"
};
}
Das nicht ganz das tun, was Sie beschrieben. Add in Tastatureingabe und Sachen :) Die meisten dieser Code muss in einer Art von Main
Methode, um tatsächlich zu laufen, etc.
In diesem Fall habe ich eine class
gewählt, um Ihre 4 Variablen zu halten. Ich habe nur 3 implementiert, und ich habe sie als Eigenschaften, anstatt Felder implementiert. Ich bin mir nicht sicher, ob das für deinen Auftrag notwendig ist, aber es ist generell eine gute Angewohnheit, keine öffentlich zugänglichen Felder zu haben, und ich möchte nicht derjenige sein, der dir schlechte Gewohnheiten beibringt. Siehe auto-implemented properties.
Sie erwähnten eine struct
, die auch eine Option wäre, je nachdem, was Sie darin speichern möchten. Im Allgemeinen wäre eine Klasse jedoch eine sicherere Wette.
Eine Schleife wäre in der Tat der Weg, um Ihre Objekte zu initialisieren. In diesem Fall ist eine for
Schleife am praktischsten. Es beginnt bei 0
zu zählen, da wir die Objekte in einem Array platzieren und Array-Indizes in C# immer bei 0
beginnen. Das bedeutet, dass Sie i + 1
verwenden müssen, um der Objektnummer zuzuweisen, oder die Objekte werden wie ihre Indizes im Array von 0 bis 9 nummeriert.
Ich initialisiere die Objekte mit object initializer syntax, die in C# 3.0 neu ist. Die altmodische Art und Weise wäre sie eins nach dem anderen zu vergeben:
myObjects[i] = new MyClass();
myObjects[i].ObjectNumber = i + 1;
myObjects[i].SomeVariable = "SomeValue";
Alternativ können Sie eine constructor für MyClass
definieren könnte, die drei Parameter übernimmt.
Eine letzte Sache: einige Leute hier gepostet Antworten, die eine generische Liste (List<MyClass>
) anstelle eines Arrays verwenden. Das wird gut funktionieren, aber in meinem Beispiel wählte ich die einfachste Form, die Sie verwenden könnten. Eine Liste hat im Gegensatz zu einem Array keine feste Größe (beachten Sie, wie ich das Array initialisiert habe). Listen sind großartig, wenn Sie später weitere Artikel hinzufügen möchten oder wenn Sie vorher nicht wissen, wie viele Artikel Sie speichern müssen. In diesem Fall haben wir jedoch die Tastatureingabe, so dass wir genau wissen, wie viele Artikel wir haben werden. Also: Array. Es wird implizit jedem, der Ihren Code liest, sagen, dass Sie nicht beabsichtigen, später weitere Elemente hinzuzufügen.
Ich hoffe, dies beantwortet einige Fragen und hob einige neue auf. Schau mal wie tief das Kaninchenloch geht: P
Das duftet nach Hausaufgabenproblem –
@Doug R: Evtl. hat er die Problemaussage aber nicht kopiert/eingefügt - das scheint eher sein Versuch einer Lösung zu sein. Die Sache ist, ich verstehe nicht, was er versucht oder warum. @Daniel: Möchten Sie eine Klasse eines bestimmten Typs dynamisch instanziieren, indem Sie die Eingabe des Benutzers für den Typnamen verwenden, oder möchten Sie, dass der Benutzer basierend auf der Eingabe des Benutzers einen neuen Typ erstellen kann? Wenn du einen neuen Typ erstellst ... was machst du danach? Ehrlich gesagt, scheint dies eine übermäßig komplexe Lösung für ein wahrscheinlich einfaches Problem zu sein. – Randolpho
Hausaufgabenfragen sind in Ordnung, solange sie nicht von der "Hier ist ein Problem, gib mir eine Antwort" -Sorte sind. –