Mengapa orang membuat string yang membingungkan dengan string literal? Jawaban yang diterima adalah jawaban yang bagus untuk pertanyaan yang berbeda; tidak untuk yang satu ini.
Saya tahu ini adalah topik lama, tetapi saya datang ke sini dengan kemungkinan pertanyaan yang sama dengan OP, dan sangat frustasi melihat orang-orang terus salah membaca. Atau mungkin saya salah membaca, saya tidak tahu.
Secara kasar, string adalah wilayah memori komputer yang, selama eksekusi program, berisi urutan byte yang dapat dipetakan ke karakter teks. String literal, di sisi lain, adalah sepotong kode sumber, belum dikompilasi, yang mewakili nilai yang digunakan untuk menginisialisasi string nanti, selama eksekusi program di mana ia muncul.
Dalam C #, pernyataan ...
string query = "SELECT foo, bar"
+ " FROM table"
+ " WHERE id = 42";
... tidak menghasilkan string tiga baris tetapi satu liner; gabungan tiga string (masing-masing diinisialisasi dari literal berbeda) tidak ada yang berisi pengubah baris baru.
Apa yang tampaknya ditanyakan OP - setidaknya apa yang akan saya tanyakan dengan kata-kata itu - bukanlah bagaimana memperkenalkan, dalam string yang dikompilasi, jeda baris yang meniru yang ditemukan dalam kode sumber, tetapi bagaimana memecah untuk kejelasan yang lama , satu baris teks dalam kode sumber tanpa memperkenalkan jeda dalam string yang dikompilasi. Dan tanpa memerlukan waktu eksekusi yang panjang, dihabiskan untuk bergabung dengan beberapa substring yang berasal dari kode sumber. Seperti garis miring terbalik dalam string multiline literal dalam javascript atau C ++.
Menyarankan penggunaan string kata demi kata, fungsi Nevermind StringBuilder
, String.Join
s atau bahkan bersarang dengan pembalikan string dan apa yang tidak, membuat saya berpikir bahwa orang tidak benar-benar memahami pertanyaan. Atau mungkin saya tidak memahaminya.
Sejauh yang saya tahu, C # tidak (setidaknya dalam versi paleolitik saya masih menggunakan, dari dekade sebelumnya) memiliki fitur untuk bersih hasil multiline string yang literal yang dapat diselesaikan selama kompilasi daripada eksekusi.
Mungkin versi saat ini mendukungnya, tapi saya pikir saya akan berbagi perbedaan yang saya rasakan antara string dan literal string.
MEMPERBARUI:
(Dari komentar MeowCat2012) Anda bisa. Pendekatan "+" oleh OP adalah yang terbaik. Menurut spek optimisasi dijamin: http://stackoverflow.com/a/288802/9399618