Maison >développement back-end >C++ >Comment puis-je créer un MemoryStream à partir d'une chaîne en C# ?

Comment puis-je créer un MemoryStream à partir d'une chaîne en C# ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-22 14:56:11347parcourir

How Can I Create a MemoryStream from a String in C#?

Création d'un MemoryStream à partir d'une chaîne en C#

Les tests unitaires nécessitent souvent de simuler des flux d'entrée à partir de fichiers texte. Cet exemple montre une méthode simple et efficace, GenerateStreamFromString, pour créer un MemoryStream à partir d'une chaîne.

GenerateStreamFromStringMise en œuvre

La fonction suivante convertit efficacement une chaîne en MemoryStream :

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

Exemple d'utilisation :

<code class="language-csharp">using (var stream = GenerateStreamFromString("a,b \n c,d"))
{
    // Process the stream here
}</code>

Gestion de l'élimination de StreamWriter

L'instruction using supprime automatiquement StreamWriter, mais cela fermerait également MemoryStream. Puisque nous devons restituer le MemoryStream, nous évitons de disposer explicitement de StreamWriter. La méthode StreamWriter de Dispose ferme uniquement le flux sous-jacent, ce qui est le comportement souhaité dans ce scénario.

Cette approche fonctionne sur toutes les versions de .NET, contrairement aux alternatives qui reposent sur les StreamWriter surcharges introduites dans .NET 4.5 et versions ultérieures. Ces surcharges permettent de garder le flux sous-jacent ouvert après la suppression, mais notre méthode maintient une compatibilité plus large.

Pour plus de détails sur la gestion de la suppression du flux, reportez-vous aux ressources traitant des techniques de fermeture StreamWriter sans fermer le flux de base.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn