Ausgabe eines eigenen Typs in Streams, z. B. Console.WriteLine("{0}",MyType);
-
Habe mir jetzt eine eigene, veränderbare String-Klasse erstellt (StringBuilder kann für mein Problem zu wenig) und möchte die jetzt auch ausgeben können, über einen StreamWriter (und später über einen StreamReader direkt einlesen).
Natürlich könnte ich sie als String (C#-string bzw. .NET-String) zurückgeben, aber dann müsste ja jedesmal aus meinem "String" ein C#-string erzeugt werden. Mein String wird in der Klasse in einem privaten char-Array (char[]) gespeichert.
Welches Interface oder welche Funktion muss ich in meiner Klasse implementieren, damit ich ihn direkt aus dem char-Array in einen StreamWriter ausgeben kann, ohne dass ein C#-string erzeugt werden muss (der ja Speicher belegt)? Also z. B.:
Qstring qs=new Qstring("Hello, World\n");
System.Console.WriteLine("{0}",qs);Ich möchte eben gerade nicht, dass ich einen String zurückgebe. Das würde bei sehr langen Strings bedeuten, dass für den kompletten, unter Umständen sehr langen String auch implizit Speicher belegt wird.
Ich möchte eine Methode/Interface implementieren, das die einzelnen Zeichen (chars) direkt an den Stream aus dem char-Array (char[]) ausgibt, ohne dass zusätzlich (implizit) Speicher (für den temporären String) angefordert wird.
Hoffe es ist verständlich was ich meine, bzw. was mein Problem ist.
-
Intern wird bei den ganzen Formatmethoden aber immer ToString() aufgerufen, d.h. wenn du diese Methoden benutzen willst, kommst du um die String-Klasse nicht herum.
Ansonsten mußt du halt eigene Input- und Outputklassen erzeugen - aber ob sich das lohnt?
-
Danke, dann kann man halt nichts machen.