Gå til innhold

Anbefalte innlegg

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
Videoannonse
Annonse

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
  • 2 uker senere...

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...