Apa pro / kontra (jika ada) untuk digunakan
string output;
int i = 10;
output = string.Format("the int is {0}", i);
melawan
string output;
int i = 10;
output = "the int is " + i;
Saya selalu menggunakan contoh terakhir, tetapi sepertinya sebagian besar tutorial online menggunakan contoh string.format. Saya tidak berpikir bahwa ada perbedaan nyata dalam hal efisiensi, pemikiran awal saya adalah seorang pembuat kode tidak harus terus memecahkan string untuk memasukkan variabel.
Jawaban:
Jika Anda menganggap terjemahan penting dalam proyek Anda, sintaks pertama akan sangat membantu.
Misalnya, Anda mungkin memiliki:
Perhatikan juga bahwa variabel Anda mungkin tidak selalu berada di tempat yang sama dalam kalimat dengan sintaks itu:
sumber
System.out.println($"{name} is {age} year's old.");
Lihatlah jawaban pertama untuk /programming/4671610/why-use-string-format . Ini mencakup semua yang menurut saya mengapa lebih baik.
Juga, masing-masing .NET assembly memiliki kumpulan intern, berisi koleksi string unik. Ketika kode Anda dikompilasi, semua string literal yang Anda referensi dalam kode Anda ditambahkan ke kumpulan ini. Jika Anda memiliki kode yang terlihat seperti ini:
Itu membuatnya 2 string di kolam renang.
Jika Anda memiliki:
"the int is {0} and the double is {1}"
Anda hanya memiliki satu String di kolam renang.
Agak lebih rumit untuk mengetahui kapan Strings diinternir, dan ketika mereka bukan karena kompiler memiliki kecerdasan ketika mendeteksi Strings yang kadang-kadang tidak perlu diinternir ... Lihat misalnya artikel ini yang memberikan lebih banyak wawasan tentang ini masalah.
Sunting: setelah menggali sedikit, saya telah menemukan jawaban yang menarik untuk pertanyaan Kapan lebih baik menggunakan String.Format vs string concatenation? . Singkatnya, penulis jawaban dengan +30 suara membuat argumen menarik yang mendukung penggabungan String ketika lokalisasi tidak terlibat.
sumber
Saya lebih suka cara pertama karena memungkinkan saya untuk secara akurat melihat seperti apa bentuk string ketika output. Sangat mudah untuk lupa menambahkan spasi, atau menambahkan spasi tambahan saat hanya menambahkan string.
Saya yakin bahwa ada juga manfaat kinerja dengan cara pertama karena tidak harus membuat string ekstra; tapi itu bukan perhatian utama saya.
sumber
Dengan menggunakan opsi pertama Anda dapat menyimpan string format yang umum digunakan dan mengurangi pengetikan yang diperlukan dan membuatnya lebih mudah untuk memperbarui string di mana pun string itu digunakan. Pada dasarnya opsi pertama memungkinkan KERING untuk diimplementasikan dengan mudah. Ini juga merupakan sintaks yang jauh lebih baik jika beberapa variabel perlu digunakan dalam sebuah string, seperti yang Anda sebutkan.
sumber
Saya pikir dengan
string.Format()
itu lebih mudah untuk melihat apa sebenarnya hasilnya (sehingga Anda tidak memiliki masalah dengan ruang yang terlupakan atau sesuatu seperti itu), dan juga lebih mudah untuk mengetik dan memodifikasi.Jika Anda ingin melakukan pemformatan yang sangat sederhana, menggunakan
+
operator plus mungkin lebih mudah, tetapi saya cenderung menggunakannya hanya saat menggabungkan dua string, tidak lebih.Untuk menunjukkan bagaimana
string.Format()
lebih mudah untuk memodifikasi, pertimbangkan bahwa Anda ingin menambahkan penghentian penuh pada akhir kalimat dalam contoh Anda: beralih daristring.Format("The int is {0}", i)
menjadistring.Format("The int is {0}.", i)
hanya satu karakter. Tetapi pergi dari"the int is " + i
ke"the int is " + i + '.'
jauh lebih banyak.Keuntungan lain
string.Format()
adalah memungkinkan Anda untuk dengan mudah menentukan format yang akan digunakan, sepertistring.Format("The int is 0x{0:X}.", i)
. Ini bahkan lebih penting ketika memformat tanggal.Adapun efisiensi,
string.Format()
kemungkinan besar lebih lambat dari penggabungan string sederhana. Tetapi kode seperti ini kemungkinan besar tidak berada di jalur panas, jadi tidak masalah. Dan jika ya, Anda mungkin lebih baik menggunakanStringBuilder
.sumber
Gunakan kode yang membuat kode Anda paling mudah dibaca. Jangan khawatir tentang kinerja.
Untuk contoh Anda di bawah ini saya lebih suka B karena hanya lebih mudah dibaca. Tetapi terjemahan bahasa di atas juga masuk akal. Jangan biarkan siapa pun memaksa Anda menggunakan string. Sebaliknya, baca dan arahkan ke blog Jeff Atwood yang luar biasa di Tragedi Sedih Teater Mikro Optimalisasi
SEBUAH:
melawan
B:
sumber
Ref: String output: format atau concat dalam C #?
Pertimbangkan kode ini.
Ini adalah versi kode Anda yang sedikit dimodifikasi.
Itulah hasil saya:
sumber