Heim >Backend-Entwicklung >C++ >Wie kann ich in C# einen MemoryStream aus einem String erstellen?
Erstellen eines MemoryStream aus einem String in C#
Unit-Tests erfordern oft die Simulation von Eingabeströmen aus Textdateien. Dieses Beispiel zeigt eine einfache und effektive Methode, GenerateStreamFromString
, um ein MemoryStream
aus einer Zeichenfolge zu erstellen.
GenerateStreamFromString
Implementierung
Die folgende Funktion wandelt einen String effizient in einen MemoryStream
um:
<code class="language-csharp">public static Stream GenerateStreamFromString(string s) { var stream = new MemoryStream(); var writer = new StreamWriter(stream); writer.Write(s); writer.Flush(); stream.Position = 0; return stream; }</code>
Verwendungsbeispiel:
<code class="language-csharp">using (var stream = GenerateStreamFromString("a,b \n c,d")) { // Process the stream here }</code>
Umgang mit der StreamWriter-Entsorgung
Die using
-Anweisung entfernt automatisch StreamWriter
, aber dadurch würde auch MemoryStream
geschlossen. Da wir das MemoryStream
zurückgeben müssen, vermeiden wir die explizite Entsorgung von StreamWriter
. Die StreamWriter
-Methode von Dispose
schließt nur den zugrunde liegenden Stream, was in diesem Szenario das gewünschte Verhalten ist.
Dieser Ansatz funktioniert in allen .NET-Versionen, im Gegensatz zu Alternativen, die auf StreamWriter
Überladungen basieren, die in .NET 4.5 und höher eingeführt wurden. Diese Überladungen ermöglichen es, den zugrunde liegenden Stream nach der Entsorgung offen zu halten, aber unsere Methode sorgt für eine breitere Kompatibilität.
Weitere Einzelheiten zur Verwaltung der Stream-Entsorgung finden Sie in den Ressourcen, in denen Techniken zum Schließen StreamWriter
ohne Schließen des Basis-Streams erörtert werden.
Das obige ist der detaillierte Inhalt vonWie kann ich in C# einen MemoryStream aus einem String erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!