Nhưng nếu tôi muốn concatinate 2 chuỗi, sau đó tôi cho rằng đó là tốt hơn (nhanh hơn) để làm nó không có StringBuilder. Điều này có đúng không?
Đó là thực sự chính xác, bạn có thể tìm thấy lý do tại sao chính xác giải thích rất tốt trên:
http://www.yoda.arachsys.com/csharp/stringbuilder.html
tóm tắt: nếu bạn có thể concatinate chuỗi trong một đi như
var result = a + " " + b + " " + c + ..
bạn tốt hơn nếu không có trình xây dựng chuỗi chỉ cho bản sao được thực hiện (độ dài của chuỗi kết quả được tính toán trước);
Đối structurs như
var result = a;
result += " ";
result += b;
result += " ";
result += c;
..
đối tượng mới được tạo ra mỗi lần, do đó bạn nên xem xét StringBuilder.
Vào cuối bài viết tóm tắt các quy tắc của ngón tay cái:
Rules of Thumb
Vì vậy, khi bạn nên sử dụng StringBuilder, và khi nào bạn nên sử dụng các toán tử nối chuỗi ?
Chắc chắn sử dụng StringBuilder khi bạn đang concatenating trong một vòng lặp không tầm thường - đặc biệt là nếu bạn không biết cho chắc chắn (tại thời gian biên dịch) có bao nhiêu lặp bạn sẽ thực hiện thông qua các vòng lặp. Ví dụ: mỗi lần đọc một tệp là ký tự, hãy tạo một chuỗi khi bạn sử dụng toán tử + = có khả năng tự tử hiệu suất.
Chắc chắn sử dụng kết nối toán tử khi bạn có thể (có thể đọc được) chỉ định mọi thứ cần được nối trong một tuyên bố. (Nếu bạn có một loạt các điều cần concatenate, hãy xem xét gọi String.Concat một cách rõ ràng -. Hoặc String.Join nếu bạn cần một delimiter)
Đừng ngại để phá vỡ literals lên thành nhiều các bit ghép nối - kết quả sẽ giống nhau. Bạn có thể hỗ trợ khả năng đọc bằng cách chia nhỏ một chữ dài thành nhiều dòng, ví dụ: với không gây hại cho hiệu suất.
Nếu bạn cần các kết quả trung gian của nối cho một cái gì đó khác hơn là ăn các phiên bản kế tiếp của nối, StringBuilder không phải là sẽ giúp bạn. Ví dụ: nếu bạn tạo tên đầy đủ từ tên đầu tiên và họ, sau đó thêm thông tin thứ ba (có thể là biệt hiệu), bạn sẽ chỉ được hưởng lợi ích từ việc sử dụng StringBuilder nếu bạn không cần (tên đầu tiên + họ) chuỗi cho mục đích khác (như chúng tôi làm trong ví dụ tạo ra đối tượng Person).
Nếu bạn chỉ có một vài concatenations để làm, và bạn thực sự muốn làm cho họ trong báo cáo riêng biệt, nó không thực sự vấn đề mà cách bạn đi. Mà cách hiệu quả hơn sẽ phụ thuộc vào số lượng concatenations kích thước của chuỗi tham gia, trật tự những gì họ đang nối trong. Nếu bạn thực sự tin rằng đoạn mã để trở thành một hiệu suất nút cổ chai, hồ sơ hoặc điểm chuẩn theo cả hai cách.
Tôi tin rằng điều này đã được đề cập trước đó. –
Rất nhiều lần –
Có khả năng trùng lặp: http://stackoverflow.com/questions/529999, http://stackoverflow.com/questions/550702, http://stackoverflow.com/questions/1612797, http: // stackoverflow. com/questions/21078, http://stackoverflow.com/questions/73883, –