Otros ya lo han dicho, pero es porque derivan de TextReader/TextWriter y se pueden usar en lugar de ellos.Por un lado, tiene más sentido utilizar el mismo método para generar líneas que utiliza para un archivo si solo desea el contenido como una cadena. Si desea una salida que abarque varias líneas en la memoria, ¿por qué molestarse en recordar poner "\ r \ n" al final de cada línea con un StringBuilder? ¿Qué sucede si desea que el código se ejecute o formatee datos para un sistema que solo usa "\ n" para los saltos de línea?
StringBuilder sb = new StringBuilder();
// will be invalid on systems that only use \n
sb.AppendFormat("{0:yyyy-MM-dd HH:mm:ss} - Start\r\n", DateTime.Now);
// still have to add an extra parameter
sb.AppendFormat("The current time is {0:yyyy-MM-dd HH:mm:ss}{1}", DateTime.Now,
Environment.NewLine);
StringWriter sw = new StringWriter();
// Don't have to worry about it, method name tells you there's a line break
sw.WriteLine("{0:yyyy-MM-dd HH:mm:ss} - Start", DateTime.Now);
// no extra parameters
sw.WriteLine("The current time is {0:yyyy-MM-dd HH:mm:ss}", DateTime.Now);
decir que quiere procesar un archivo línea por línea, es probable que utilice un StreamReader en lugar de cargar todo el archivo en un StringBuilder y la división por caracteres de nueva línea en una matriz, ¿verdad? Con StringReader puede usar exactamente el mismo método (siempre que tome un TextReader genérico) creando el StringReader a partir de una cadena de un TextBox o formulario web.
Los DataContexts de Linq2Sql tienen una propiedad de registro que puede establecer en un TextWriter para generar sus consultas antes de que se ejecuten, para ver exactamente qué se está ejecutando. Puede establecer esto en un TextWriter adjunto a un archivo, pero puede adjuntar un StringWriter y mostrar el contenido en la parte inferior de su página web al probar ...
duplicado posible de [StringWriter o StringBuilder] (http://stackoverflow.com/questions/602279/stringwriter-or-stringbuilder) –