Những người khác đã nói rồi, nhưng đó là vì chúng lấy được từ TextReader/TextWriter và có thể được sử dụng thay cho chúng.Đối với một điều nó chỉ có ý nghĩa hơn để sử dụng cùng một phương pháp để xuất ra dòng mà bạn sử dụng cho một tập tin nếu bạn chỉ muốn nội dung như là một chuỗi. Nếu bạn muốn đầu ra sẽ kéo dài nhiều dòng trong bộ nhớ, tại sao phải nhớ đặt "\ r \ n" ở cuối mỗi dòng bằng một StringBuilder? Điều gì sẽ xảy ra nếu bạn muốn mã chạy trên hoặc định dạng dữ liệu cho hệ thống chỉ sử dụng "\ n" cho ngắt dòng?
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);
Giả sử bạn muốn xử lý một dòng tập tin bằng cách dòng, bạn có lẽ sẽ sử dụng một StreamReader thay vì tải toàn bộ tập tin vào một StringBuilder và tách nó bằng ký tự xuống dòng vào một mảng, phải không? Với StringReader bạn có thể sử dụng chính xác cùng một phương thức (miễn là nó có một TextReader chung) bằng cách tạo StringReader từ một chuỗi từ một TextBox hoặc biểu mẫu web.
LINQ2Sql DataContexts có thuộc tính Nhật ký bạn có thể đặt thành TextWriter để có kết quả truy vấn của bạn trước khi chúng được thực hiện để xem chính xác những gì đang được chạy. Bạn có thể đặt điều này thành một TextWriter gắn liền với một tệp, nhưng bạn có thể đính kèm một StringWriter vào nó và xuất nội dung ở dưới cùng của trang web của bạn khi thử nghiệm ...
Nguồn
2010-11-30 04:47:36
có thể trùng lặp của [StringWriter hoặc StringBuilder] (http://stackoverflow.com/questions/602279/stringwriter-or-stringbuilder) –