pembangunan bahagian belakang
Tutorial C#.Net
Apakah amalan terbaik untuk penggabungan rentetan dalam C#?
Apakah amalan terbaik untuk penggabungan rentetan dalam C#?
Utamakan menggunakan rentetan.Concat, rentetan.Sertai atau rentetan interpolasi dan bukannya menyambung rentetan masa jalan; interpolasi sesuai untuk senario campuran mudah seperti pengelogan/UI, rentetan.Concat sesuai untuk menyambung rentetan bukan kosong yang diketahui, dan hanya sesuai untuk pemalar atau dua pembolehubah. StringBuilder hanya perlu apabila ditambah 5 kali.

Gunakan string.Concat , string.Join , atau rentetan interpolasi — bukan — apabila menggabungkan lebih daripada dua rentetan pada masa jalan.
Bila hendak menggunakan $"" interpolasi vs string.Concat
Rentetan interpolasi adalah bersih dan boleh dibaca untuk kes mudah dengan huruf dan nilai bercampur. Tetapi di bawah tudung, mereka menyusun kepada string.Format atau string.Concat bergantung pada konteks — dan boleh memperuntukkan tidak perlu jika digunakan dalam gelung atau laluan panas.
- Lebih suka
$"Hello {name}, you have {count} messages"untuk pengelogan, teks UI atau gubahan sekali sahaja - Lebih suka
string.Concat(a, b, c)apabila semua operan diketahui rentetan (tiada pemformatan, tiada semakan nol diperlukan) - Elakkan
$"{a}{b}{c}"dalam gelung ketat — ia mencipta rentetan format dan memanggil logik pemformatan walaupun tiada ruang letak aktif
kenapa penggabungan adalah baik untuk pemalar - tetapi berbahaya pada masa jalan
Pengkompil C# mengoptimumkan literal rentetan bersebelahan: "a" "b" "c" menjadi "abc" pada masa penyusunan. Tetapi abc dengan a , b , c adalah pembolehubah mencetuskan berbilang peruntukan rentetan perantaraan.
- Dua pembolehubah?
abboleh diterima — JIT mungkin mengoptimumkannya kepadastring.Concat - Tiga atau lebih pembolehubah? Pengkompil kembali ke
string.Concat(object[]), yang mekotak jenis nilai dan memperuntukkan tatasusunan - Nilai nol?
absecara senyap menukarnullkepada"null";string.Concat(a, b)menganggapnullsebagai rentetan kosong — tingkah laku berbeza
Apabila StringBuilder sebenarnya diperlukan
StringBuilder bersinar hanya apabila anda melakukan banyak tambahan — biasanya 5 — dalam gelung atau binaan progresif. Jangan sampai sebelum waktunya.
- Menambahkan 2–4 rentetan?
string.Concatatau interpolasi lebih cepat dan ringkas - Membina baris CSV daripada senarai?
string.Join(",", values)mengalahkanStringBuildermanual setiap kali - Menggulung ratusan item dan menambahkan setiap satu? Kemudian ya - mulakan dengan kapasiti:
var sb = StringBuilder baharu(1024);
- Memanggil
ToString()pada peruntukan kuasaStringBuilder— elakkan memanggilnya berulang kali dalam satu gelung
Perangkap terbesar bukanlah memilih kaedah yang salah — ia mengandaikan kos penggabungan adalah seragam merentas konteks. $"" yang kelihatan tidak berbahaya dalam penyata log mungkin menjadi mahal dalam panggilan perkhidmatan frekuensi tinggi, manakala string.Join secara senyap-senyap mengendalikan kes tepi seperti unsur null tanpa kekecohan.
Atas ialah kandungan terperinci Apakah amalan terbaik untuk penggabungan rentetan dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Alat AI Hot
Undress AI Tool
Gambar buka pakaian secara percuma
AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.
Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik
Stock Market GPT
Penyelidikan pelaburan dikuasakan AI untuk keputusan yang lebih bijak
Artikel Panas
Alat popular
Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma
SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan
Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa
Dreamweaver CS6
Alat pembangunan web visual
SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)
Topik panas
Bagaimana untuk mengesahkan alamat e-mel dalam C#? (Corak regex)
Mar 08, 2026 am 12:06 AM
Adalah disyorkan untuk menggunakan biasa rasmi ringan Microsoft ^[a-zA-Z0-9._% -] @[a-zA-Z0-9.-] \.[a-zA-Z]{2,}$ untuk pengesahan format e-mel asas, meliputi 99% daripada input sebenar; cara yang lebih dipercayai ialah menggunakan pembina MailAddress dan hanya menangkap FormatException, sambil mengesahkan rentetan null/kosong terlebih dahulu.
Bagaimana untuk menggunakan refleksi untuk mendapatkan nilai harta dalam C#? (GetType)
Mar 06, 2026 am 12:15 AM
GetProperty harus digunakan bersama dengan GetValue untuk mendapatkan nilai harta dan bukannya hanya memanggil GetType; adalah perlu untuk memberi perhatian kepada butiran seperti keterlihatan harta, perhubungan warisan dan pengindeks, dan disyorkan untuk cache PropertyInfo untuk meningkatkan prestasi.
Bagaimana untuk menggunakan sifat dengan get set dalam C#? (Encapsulation)
Mar 10, 2026 am 12:33 AM
get/set tidak hanya menambah kurungan, tetapi merangkum titik permulaan: medan eksplisit diperlukan, operasi yang memakan masa dielakkan, ArgumentException dilemparkan apabila pengesahan gagal, pengubah suai akses berbeza disokong, init terhad kepada senario permulaan dan atribut logik pada asasnya ialah kaedah. Perhatian khusus mesti diberikan kepada penyahpepijatan dan prestasi.
Bagaimana untuk memisahkan rentetan dengan pembatas dalam C#? (String.Split)
Mar 12, 2026 am 12:21 AM
Ya, String.Split mengembalikan rentetan kosong secara lalai, menyebabkan item kosong disebabkan oleh pembatas berterusan atau pertama dan terakhir; anda perlu menggunakan StringSplitOptions.RemoveEmptyEntries untuk menapis, atau menapis secara manual; char[] digunakan untuk pemisahan aksara tunggal, dan rentetan[] digunakan untuk pemisahan subrentetan; Span.Split boleh mengelakkan peruntukan; melepasi had atas nombor akan memotong keputusan.
Bagaimana untuk menulis ke fail teks dalam C#? (Contoh StreamWriter)
Mar 05, 2026 am 12:14 AM
Anda mesti menggunakan menggunakan untuk memastikan bahawa StreamWriter dikeluarkan dengan betul. Laluan perlu dibina dengan Path.Combine dan direktori mesti dibuat terlebih dahulu. File.WriteAllText atau File.AppendAllText lebih disukai untuk memudahkan operasi.
Bagaimana untuk menggunakan jenis nullable dalam C#? (Jenis rujukan boleh batal)
Mar 06, 2026 am 12:14 AM
Selepas mendayakan nullable, rentetan bermaksud bukan nol (ralat akan dilaporkan jika null diberikan atau dereference tidak dikesan), string? secara eksplisit membenarkan null; fail lama perlu #nullableenable secara eksplisit untuk berkuat kuasa; API luaran lalai kepada kemungkinan null.
Bagaimana untuk menyertai rentetan dengan pemisah dalam C#? (String.Join)
Mar 13, 2026 am 12:02 AM
String.Join direka khas untuk penyambungan rentetan. Ia selamat, cekap dan sangat mudah dibaca. Hanya masukkan pembatas dan tatasusunan rentetan, dan elemen nol akan dilangkau secara automatik. Tatasusunan kosong atau null akan mengembalikan rentetan kosong. Pemformatan eksplisit diperlukan untuk mengendalikan jenis bukan rentetan. Dalam senario sensitif prestasi, tatasusunan diluluskan dahulu dan bukannya IEnumerable. StringBuilder sesuai untuk logik yang kompleks.
Bagaimana untuk mengukur masa pelaksanaan dalam C#? (Kelas jam randik)
Mar 16, 2026 am 12:13 AM
Jam randik.Start() perlu dipanggil untuk kejadian yang tidak dimulakan, jika tidak InvalidOperationException akan dilemparkan; StartNew() ialah kaedah statik yang boleh dibuat dan dimulakan dalam satu langkah, menjadikannya lebih selamat dan lebih biasa digunakan.





