C# - Kleines Prob - Komm nich weiter!!

Alexander12

Erfahrenes Mitglied
Hi cosmo,

Nein, Norbert hat es oben OHNE die Klammern {} probiert. Dann liest er ja nur jede zweite Zeile ein. Ich habe aber die Klammern so gestzt:

Code:
while()
{
     //Den Code hier führt er dann bei mir JEDES Ma aus, weil die Klammern gesetzt sind.
}

MfG Alexander12
 

Norbert Eder

Erfahrenes Mitglied
Alexander12 erzähl mir nichts.

Dein ursprünglicher Code, der DEFINITIV nur jede zweite Zeile einliest:
Code:
while ( (Line = Reader.ReadLine()) != null )
{ 
  arr.Add(Reader.ReadLine()); 
}
Und dein nachgebesserter Code (der dann funktioniert, und trotzdem net sauber is)
Code:
while ( (Line = Reader.ReadLine()) != null )
{ 
  arr.Add(Line); 
}
Und zu den Klammern: Wenn nur EIN einziges Statement in einer Schleife ausgeführt wird, braucht man die Klammern nicht, hat auf das Ergebnis KEINERLEI Auswirkung.

Ich weiß was ich tu.
 

Norbert Eder

Erfahrenes Mitglied
Code:
while (sr.Peek() >= 0) 
    Console.WriteLine(sr.ReadLine());
Die Variante ist nämlich nicht nur schöner, sondern verbraucht auch weniger Ressourcen. Bei deiner Variante instanzierst du zuerst einen String. Das braucht schon mal recht viel Zeit und Ressourcen. Bei jedem Durchlauf der while-Schleife, wird der String (Line) nochmals instanziert und zugewiesen. Muss eigentlich nicht sein.
 

Alexander12

Erfahrenes Mitglied
Hi.

Ja, ok, Ich habs übersehen oben, das Ich in meinem 2. Post den (fast) gleichen Code wie im 1. Post geschrieben habe. Weisst, Ich habe den Code kopiert, eine Zeile zum Kommentar gemacht und ide Klammern gesetzt. Ich habe ja vergessen das

Code:
arr.Add(Reader.ReadLine());

umzuschreiben das es so aussieht:

Code:
arr.Add(Line);

Wenn Ichs ja nicht vergessen hätte wäre das problem gar nicht erst gewesen Ich weiß ..

Naja, hab übrigens den ""falschen"" Code von mir mal ausprobiert, hast recht, SIEHE ANHANG.

MfG Alexander12
 

Anhänge

  • auslesen.zip
    11,1 KB · Aufrufe: 20

Christian Kusmanow

Erfahrenes Mitglied
Norbert Eder hat gesagt.:
Code:
while (sr.Peek() >= 0) 
    Console.WriteLine(sr.ReadLine());
Die Variante ist nämlich nicht nur schöner, sondern verbraucht auch weniger Ressourcen. Bei deiner Variante instanzierst du zuerst einen String. Das braucht schon mal recht viel Zeit und Ressourcen. Bei jedem Durchlauf der while-Schleife, wird der String (Line) nochmals instanziert und zugewiesen. Muss eigentlich nicht sein.
Das hast Du sicherlich recht. :)
Wenn man den String an der Stelle nicht auch woanders noch braucht.
ReadLine() löscht den String ja, nachdem an ihn ausgelsen hat.
Oder hab ich es nicht verstanden und fabrizier unsauberen Code?
 

Alexander12

Erfahrenes Mitglied
Hi cosmo,

Manchmal brauch ich den String noch um ihn zu Splitten oder in ne comboBox einzulesen etc..

Aber die Methode von Norbert ist auch gut, begründet hat er diese ja. Werd Ich mir mal reinziehn. :)

MfG Alexander12
 

Christian Kusmanow

Erfahrenes Mitglied
Weisst was. Norberts Vorschlag ist sogar um weiten schneller. :-(
Es währe wirklich schneller wenn man den temporären String erst nach dem Peek() instanziert.
Wenn wir den Nobert nicht hätten und er uns nicht immer zum Nachdenken anregen würde.... :)

MfG, cosmo
 

Alexander12

Erfahrenes Mitglied
Hi.

Ja, aber bei meinem Programm, das hat dich net so viele Funktionen, ob Ich da einen Geschwindigkeitsbonus habe?

Aber gut zu wissen, für große Projekte ist die Methode ideal. Aber bei meinem kleinen Projekt kommts da drauf wahrscheinlich nicht an.... :-(


MfG Alexander12