Menggunakan variabel di dalam string


90

Di PHP saya bisa melakukan hal berikut:

$name = 'John';
$var = "Hello {$name}";    // => Hello John

Apakah ada konstruksi bahasa yang serupa di C #?

Saya tahu ada String.Format();tetapi saya ingin tahu apakah itu bisa dilakukan tanpa memanggil fungsi / metode pada string.

Jawaban:


224

Di C # 6 Anda dapat menggunakan interpolasi string :

string name = "John";
string result = $"Hello {name}";

Penyorotan sintaks untuk ini di Visual Studio membuatnya sangat mudah dibaca dan semua token diperiksa.


88

Fungsionalitas ini tidak terintegrasi dengan C # 5 atau lebih rendah.
Pembaruan: C # 6 sekarang mendukung interpolasi string, lihat jawaban yang lebih baru.

Cara yang disarankan untuk melakukannya adalah dengan String.Format:

string name = "Scott";
string output = String.Format("Hello {0}", name);

Namun, saya menulis pustaka sumber terbuka kecil bernama SmartFormat yang diperluas String.Formatsehingga dapat menggunakan placeholder bernama (melalui refleksi). Jadi, Anda bisa melakukan:

string name = "Scott";
string output = Smart.Format("Hello {name}", new{name}); // Results in "Hello Scott".

Harap Anda menyukainya!


2
Jenis hukuman kinerja apa yang ada untuk menggunakan implementasi refleksi Anda vs string standar. Format?
styfle

Saya melihat Anda sudah memiliki halaman kinerja di wiki. Ini terlihat cukup menjanjikan. Kerja bagus!
styfle

Ya, saya yakin laman kinerja mungkin menjawab pertanyaan Anda, tetapi saya belum membuat perbandingan apa pun antara "Halo {0}" vs "Halo {nama}". Jelas refleksi akan memakan waktu lebih lama. Namun, menggunakan fitur cache meningkatkan kinerja penguraian, dan dapat meminimalkan perbedaannya. Either way, semuanya CEPAT!
Scott Rippey

1
Ini tidak lagi benar. C # 6 menambahkan ini sebagai fitur
Cole Johnson

5

Hingga C # 5 (-VS2013) Anda harus memanggil fungsi / metode untuk itu. Salah satu fungsi "normal" seperti String.Formatatau kelebihan beban operator +.

string str = "Hello " + name; // This calls an overload of operator +.

Dalam C # 6 (VS2015) interpolasi string telah diperkenalkan (seperti yang dijelaskan oleh jawaban lain).


5

Gunakan metode berikut

1: Metode satu

var count = 123;
var message = $"Rows count is: {count}";

2: Metode dua

var count = 123;
var message = "Rows count is:" + count;

3: Metode tiga

var count = 123;
var message = string.Format("Rows count is:{0}", count);

4: Metode empat

var count = 123;
var message = @"Rows
                count
                is:{0}" + count;

5: Metode lima

var count = 123;
var message = $@"Rows 
                 count 
                 is: {count}";

1
Alangkah baiknya untuk menambahkan komentar tentang mengapa Anda memilih menggunakan masing-masing metode ini.
ZombieCode
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.