他の人はすでに言っていますが、それは TextReader/TextWriter から派生し、代わりに使用できるためです。1 つには、コンテンツを文字列としてのみ必要な場合は、ファイルに使用するのと同じ方法で行を出力する方が理にかなっています。メモリ内の複数の行にまたがる出力が必要な場合、StringBuilder を使用してすべての行の末尾に "\r\n" を忘れずに配置する必要があるのはなぜでしょうか? 改行に "\n" のみを使用するシステムでコードを実行したり、データをフォーマットしたりするにはどうすればよいでしょうか?
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);
ファイルを 1 行ずつ処理したい場合、ファイル全体を StringBuilder にロードして改行文字で配列に分割する代わりに、おそらく StreamReader を使用するでしょう。StringReader を使用すると、TextBox または Web フォームの文字列から StringReader を作成することにより、まったく同じ方法を使用できます (汎用の TextReader を使用する場合)。
Linq2Sql DataContexts には、TextWriter に設定できる Log プロパティがあり、実行前にクエリを出力して、何が実行されているかを正確に確認できます。これをファイルに添付された TextWriter に設定できますが、テスト時に StringWriter を添付して Web ページの下部にコンテンツを出力することもできます...