如何使用stringbuilder并将其转换为streamReader?

Bla*_*man 7 c# stream streamreader

如何使用stringbuilder并将其转换为流?

所以我的stringbuilder必须转换为:

StreamReader stream = ????
Run Code Online (Sandbox Code Playgroud)

更新

我尝试使用stringreader,如:

StringReader sr = new StringReader(sb.ToString());
StreamReader stream = new StreamReader(sr);
Run Code Online (Sandbox Code Playgroud)

但那不起作用?

And*_*obs 9

使用ToString将StringBuilder转换为String,并使用StringReader将String包装为Stream.

  • 如果您对它有任何控制权,请让该函数接受TextReader(而不是StreamReader),它是两者的基类.否则,您可能必须使用Qua发布的代码. (6认同)

Kas*_*dum 6

如果StreamReader要求使用a,则将字符串转换为内存流,然后使用该对象创建新的StreamReader:

StreamReader reader= new StreamReader(
                new MemoryStream(Encoding.ASCII.GetBytes(sb.ToString())));
Run Code Online (Sandbox Code Playgroud)

  • 这将导致在内存中进行两次不必要的分配和数据副本(一个由`sb.ToString()` 另一个通过`GetBytes()`)。更好的方法是将“TextReader”子类化并通过直接从“StringBuilder”实例读取来实现它。 (2认同)