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.