kakebake Skrevet 14. september 2011 Del Skrevet 14. september 2011 Hei, jeg er student og nettopp begynt med c# trenger derfor litt hjelp med en oppgave jeg jobber med. Jeg skal lage en Struct, som skal inneholde properties for 4 variabler som skal være koordinater og navn ( int x, y, z, String label). Også skal jeg ha en egen klasse som skal inneholde ett array av disse objektene fra Structen. Alt har gått bra men i ToString metoden min skal jeg skrive ut det som er i arrayet, siden arrayet mitt er større enn antall obj jeg har skriver den ut de tomme plassene også, legger ved relevant kode: //ToString metode for Punkt public override String ToString() { String report = X + " " + Y + " " + Z + " " + LABEL + "\n"; return report; } Minepunkter klassen: public override String ToString() { StringBuilder r = new StringBuilder(); for (int i = 0; i < punktTabell.Length; i++) { r.Append(punktTabell.ToString()); } return Convert.ToString®; } Det som skal komme ut etter å ha kjørt main metoden: (x, y, z, "label") Men det som kommer er (x, y, z, "label") 0 0 0 0 0 0 0 0 0 osv for alle tomme plasser. Jeg skjønner at problemet mitt ligger i det at jeg skriver ut fra ToStringen til til Punkt. noen som vet hvordan jeg skal stoppe utskrift for tomme array slots? Lenke til kommentar
GeirGrusom Skrevet 14. september 2011 Del Skrevet 14. september 2011 Du må sjekke om de er tomme. Eksempelvis slik: struct Punkt { public int X, Y, Z; public string Label { get; set; } public bool IsEmpty() { return Label == null; } public Punkt(int x, int y, int z, string label) { Label = label ?? string.Empty; this.X = x; this.Y = y; this.Z = z; } public Punkt(int x, int y, int z) this : (x, y, z, string.Empty) { } } Denne gjør antagelsen om at dersom en har brukt constructoren, så er ikke cellen tom. For å da sette en celle tom, setter du den lik default(Punkt). IsEmpty vil da returnere true for alle celler der Label er null, dvs celler der constructoren aldri er kalt. Lenke til kommentar
MailMan13 Skrevet 14. september 2011 Del Skrevet 14. september 2011 Evt. lage arrayet av Nullable-punkter... Lenke til kommentar
GeirGrusom Skrevet 14. september 2011 Del Skrevet 14. september 2011 Da kan du likegodt bytte til class istedet for nullable. Lenke til kommentar
MailMan13 Skrevet 14. september 2011 Del Skrevet 14. september 2011 (endret) Nei, det er ikke helt det samme. En klasse blir en reference type, en Nullable er en struct med et "HasValue"-flagg under panseret og litt kompilator-magi for å få det til å oppføre seg pent med null-keywordet. Endret 14. september 2011 av MailMan13 Lenke til kommentar
GeirGrusom Skrevet 15. september 2011 Del Skrevet 15. september 2011 I see. Det var jeg ikke klar over Lenke til kommentar
kakebake Skrevet 27. september 2011 Forfatter Del Skrevet 27. september 2011 Takk for hjelpen, fikk ordnet problemene Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå