2008-12-08 27 views
6

Duplicate từ: String output: format or concat in C#?

Đặc biệt trong C# thế giới sử dụng String.Format cho tất cả mọi thứ thực sự phổ biến, thường là nhà phát triển VB.NET trừ khi tôi phải * Tôi không String.Format,String.Format or Not?

Tôi thích bình thường nối chuỗi, chẳng hạn như:

V1 = V2 & "test-x" & V3 & "-;" 

với tôi đó là tốt hơn thế này:

V1 = String.Format("{0} test-x {1} -;", V2, V3) 

Tôi có thiếu gì đó không? Hay đây chỉ là sở thích cá nhân?

lý do để sử dụng String.Format (Từ Các Answers) (tôi sẽ cố gắng duy trì như thế cho đến nay)

  • Localization trở nên dễ dàng hơn nhiều nếu bạn sử dụng String Format
  • Rõ ràng là dễ dàng thay đổi định dạng của đầu vào
  • Nó dễ đọc hơn (tuy nhiên đây là cá nhân)
  • Hiệu suất tốt hơn

** Đôi khi tôi cần phải thay đổi những thứ phong cách hoặc thay thế động sau đó tôi sử dụng String.Format *

Trả lời

14

Nếu bạn đã từng đi đến địa hóa ứng dụng của bạn (và nó thường khó có thể phán quyết rằng ra vào lúc bắt đầu), sau đó String.Format là để được nhiều ưu đãi, vì hai lý do:

  1. Bạn chỉ có một chuỗi chữ để dịch
  2. Bạn có thể thay đổi thứ tự của các giá trị, mà có thể làm cho thêm se nse bằng ngôn ngữ khác.
+0

đó là lý do khá tốt để đi với String.Format, cảm ơn vì đã chỉ ra điều này. –

+0

"Bạn có thể thay đổi thứ tự của các giá trị" - Làm cách nào để giúp bạn bằng một ngôn ngữ khác? – Tomalak

+0

Điều đầu tiên xuất hiện trong tâm trí của tôi: Địa chỉ, được định dạng theo nhiều cách khác nhau trên toàn thế giới (ví dụ: zip trước, sau đó là thành phố - hoặc ngược lại) ... –

0

Cá nhân tôi thấy rằng String.Format là dễ dàng hơn để đọc, chuỗi được trình bày như một văn bản liên tiếp . Nó phụ thuộc vào số lượng tham số có, nếu bạn cần phải tìm kiếm thông số phù hợp để hiểu nó, thì ...

3

Bài viết hay tại đây bởi Karl Seguin: code better - use string.format giải thích một số lợi ích.

+1

nên về cơ bản nó chỉ trông tốt hơn :) hoặc có thể đọc được mà nắm để sở thích cá nhân, phải không? –

1

Phương pháp đầu tiên là rất khó đọc và thậm chí nhiều hơn một lỗ khoan để nhập. Đồng thời, một khi bạn bắt đầu thực hiện rất nhiều kết nối đó, có những cân nhắc về hiệu suất để suy nghĩ.

+0

Tôi nghĩ chúng giống hệt nhau, có vấn đề gì về hiệu năng thực sự không? –

+0

Đúng. Vì các chuỗi không thay đổi trong .NET, mỗi phép nối tạo một chuỗi mới mà phải được GC thu thập. Cách tiếp cận của string.Format hoàn toàn khác (giống như StringBuilder). – TToni

+0

nội dung hay, đã học được điều gì đó mới mẻ hôm nay. –

1

Nếu bạn đang thực sự định dạng giá trị ({0: d}, v.v.), String.Format tốt hơn rất nhiều để đọc hơn chuỗi nối.

1

Đối với tôi, nó phụ thuộc vào nội dung. Chuỗi ghép nối không tạo ra các đối tượng chuỗi bổ sung (vì strings are immutable in .NET), mặc dù chủ yếu đó là vấn đề về khả năng đọc.

Đôi khi nó trở nên phức tạp khi bạn muốn đặt ký tự xuống dòng trong một chuỗi, trong trường hợp này tôi có xu hướng sử dụng một cái gì đó như:

StringBuilder.AppendLine(string.Format("Some text {0}.", "here")); 
+0

Ví dụ xấu - sử dụng AppendFormat thay thế, sau đó AppendLine không có arg. –

+0

Bạn biết đấy, bạn có một điểm tốt - tôi chưa bao giờ thực sự có thể chọn cách "tốt nhất" để sử dụng các phương thức StringBuilder.AppendLine/AppendFormat. Tôi thực sự muốn một phương thức AppendLineFormat. :) Ý của bạn là: body.AppendFormat ("Ths {0}", "sfdsf"). AppendLine(); –

+0

@Neil: Yup, mặc dù tôi thường làm cho nó một tuyên bố riêng biệt là tốt, trừ khi tôi đang làm một * rất nhiều * này. –

0

Tôi tin rằng đó là vấn đề ưu tiên hơn. Tuy nhiên một khi tôi bắt đầu sử dụng nó thường xuyên hầu hết các nhóm của tôi theo sau phù hợp. Khi chúng tôi thảo luận nó đã được đồng ý rằng chỉ là dễ hiểu và dễ đọc hơn.

5

Mọi người đã đăng về cách chuỗi có thể đọc được. Tôi chấp nhận rằng nó có lợi ích vô hiệu và quốc tế hóa) nhưng không ai đề cập rằng đáng kể chậm hơn chuỗi đơn giản (số lượng nhỏ các phần tử) hoặc sử dụng StringBuilder (số lượng lớn các bản concats).

Nếu các vấn đề về hiệu suất hoặc bạn đang thực hiện một số lượng lớn các hoạt động (do đó hiệu suất sẽ sớm sẽ vấn đề) thì bạn nên tránh định dạng.

Edit: Tài liệu tham khảo theo yêu cầu;)

http://msmvps.com/blogs/jon_skeet/archive/2008/10/06/formatting-strings.aspx

http://blog.briandicroce.com/2008/02/04/stringbuilder-vs-string-performance-in-net/

+0

Hãy tham khảo http://msmvps.com/blogs/jon_skeet/archive/2008/10/06/formatting-strings.aspx trong câu trả lời của bạn :) –

+0

Ha! Chính bài viết đó đã khiến tôi chuẩn bị bản thân một vài tháng trước. Tên được tha thứ nhưng nội dung được ghi nhớ. – annakata