Array füllen

Hallo Leute,

Ich möchte den Titel und die Adresse in einem Array von meiner Entwickelten Klasse Favoriten speichern und später in der Console ausgeben.

Meine Frage
Wie speicher ich meine Eingaben in das Favoriten Array?

C#:
class Favorite
{
string name;
Uri url;

public Favorite(string name, Uri url)
{
this.name = name;
this.url = url;
}

public string Name
{
get { return name; }
set { name = value; }
}

public Uri URL
{
get { return url; }
set { url = value; }
}

public void Open()
{
Process.Start(url.ToString());
}
}

class Program
{
static void Main(string[] args)
{
int zahl;
Console.WriteLine("Anzahl der zu speichernden Favoriten");
zahl = Convert.ToInt32(Console.ReadLine());

args = new string[zahl];

Favorite[] favarray = new Favorite[zahl];

for (int i = 0; i < args.Length; i++)
{

}

Console.ReadKey();
}
}
PS: Bitte keine Lösung posten sondern erklären :)
 
Zuletzt bearbeitet von einem Moderator:

sheel

I love Asm
Mir ist nicht klar, was du erreichen willst (zB., ob die Daten von den Konsolenparametern oder
Tastatureingaben im Programm kommen sollen) und wobei du dich nicht auskennst.
 

Spyke

Premium-User
du kannst ganz einfach über den Indexer des Arrays arbeiten:
Code:
for(int i=0;i < zahl; i++)
   favarray[i] = new Favorite(...);
 
Das ist die Übungsaufgabe:

Erstellen Sie eine Konsolenanwendung, die den Anwender auffordert, eine bestimmte Zahl an Favoriten zu speichern. Die Zahl der zu speichernden Favoriten soll dabei als Kommandozeilenparameter übergeben werden. Speichern Sie dann die Eingaben, die aus einem Namen und einer WWW-Adresse bestehen, in einem Array vom Typ der in diesem Kapitel entwickelten Klasse Favorite. Anschließend soll der Anwender den Index des entsprechenden Favoriten angegeben, der im Browser geöffnet werden soll.

Wenn ich nun das Array mit der foreach Schleife lesen möchte gibt die Console nur ConsoleApplicationTest.Favorite aus
 

sheel

I love Asm
In deinem gezeigten Code ist gar keine foreach-Schleife.
Wenn dort etwas nicht funktioniert, bitte auch zeigen...
 
sry vergessen
C#:
class Favorite
    {
        string name;
        Uri url;

        public Favorite(string name, Uri url)
        {
            this.name = name;
            this.url = url;
        }

        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        public Uri URL
        {
            get { return url; }
            set { url = value; }
        }

        public void Open()
        {
            Process.Start(url.ToString());
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            int zahl;
            Console.WriteLine("Anzahl der zu speichernden Favoriten");
            zahl = Convert.ToInt32(Console.ReadLine());

            Favorite[] favarray = new Favorite[zahl];
            for (int i = 0; i < zahl; i++)
            {
                favarray[I] = new Favorite(Console.ReadLine(),new Uri(Console.ReadLine()));
            }

            foreach (Favorite i in favarray)
            {
                Console.WriteLine(i);
            }

            Console.ReadKey();
        }
    }
 

sheel

I love Asm
(und bitte lass nicht immer mich die Codeboxen erstellen. Das kannst du auch selbst.)

Naja, es macht genau was du geschrieben hast.
Du willst Objekte der Klasse Favorite auf die Konsole ausgeben.
Aber wie schaut ein "Favorite" in Textform aus?

Nur, weil da zwei Stringvariablen drin sind, heißt das für den Computer nicht, dass die beide zusammen
die Textrepräsentation von einem Favorite sind. Entweder, du gibst i.Name und i.URL separat aus, oder
du machst eine Methode ToString in Favorite, die den auszugebenden Text returned.
 

Spyke

Premium-User
oder
du machst eine Methode ToString in Favorite, die den auszugebenden Text returned.
nur zur Ergänzung, was #sheel meint ist du musst die ToString Methode überschreiben.
Da du direkt versucht hast ein Objekt auszugeben geht hier das .Net Framework intern auf die ToString Methode.

P.S.:
Klassen und Strukturen sind alle implizit von object abgeleitet, weshalb du diese ganz leicht überschreiben kannst.
 

Neue Beiträge