Citat:
Ursprungligen postat av
jonatan36
Okej det fungerade!
Det jag undrar härnäst är hur jag kommer åt och skriver ut objektet?
I vanliga fall så namnger man ju objektet man skapar, t.ex: Klass NamnPåObjekt = new Klass();
Detta sker dock inte när ett objekt automatiskt skapas och läggs till i listan:
Kod:
KontoLista.Add(new Konto(saldo, customer, isMale))
Om jag vill skriva ut värdena på attributen som objektet innehåller som ligger i listan, hur gör jag då?
Med tanke på att jag inte har något namn att refarera till?
Om jag prövar att skriva ut det med:
Kod:
Console.WriteLine(KontoLista[0]);
så får jag bara "bank.konto", alltså verkar det inte fungera att bara använda sig av index som man skulle i en vektor. Finns det då inget system som man kan använda för att identifiera ett enskilt objekt i listan?
Mycket tacksam för hjälpen!
Den där koden gör ju precis det som står i den.
Kompilatorn har ingen aning om vad "konto" är för klass eller hur den ska hanteras. Det den däremot vet är att när den stöter på en utskrift av ett konto kommer den att anropa ToString i kontoklassen.
Eftersom du inte overridat den kommer kompilatorn ta första bästa ToString den kan få tag på, nämligen den som du implicit ärver från Object.
Ska du ha ut nåt annat när du skriver ut ditt kontoobjekt får du tala om HUR det ska ske, genom att overrida ToString.
Att skriva ut enskilda properties är ju däremot inga problem, du behöver får tag på objektet och sen anropa getpropertyn.
Kod:
Console.WriteLine(KontoLista[0].Customer);
till exempel.
Du kommer få samma problem oavsett om du lägger det i en array, kompilatorn kommer fortfarande inte veta hur man skriver ut ett objekt av typen "konto" om du inte explicit talar om hur det ska göras. Du kan ju prova själv:
Kod:
var myArray = KontoLista.ToArray();
Console.WriteLine(myArray[0]);