Rumah pembangunan bahagian belakang Tutorial C#.Net Apakah tujuan kelas StringBuilder dalam C#?

Apakah tujuan kelas StringBuilder dalam C#?

Sep 09, 2023 pm 04:53 PM

C# 中 StringBuilder 类的用途是什么?

Dalam C#, rentetan tidak boleh diubah. Ini bermakna rentetan tidak boleh diubah suai setelah dibuat. Sebarang pengubahsuaian pada rentetan mengembalikan rentetan baharu yang mengandungi pengubahsuaian, manakala rentetan asal kekal tidak berubah.

string word = "aaabbbccc";
string newWord = word.Replace('b', 'd');
Console.WriteLine(word); // prints aaabbbccc
Console.WriteLine(newWord); // prints aaadddccc
Salin selepas log masuk

Kelas StringBuilder mewakili objek seperti rentetan yang boleh diubah suai, iaitu rentetan boleh ubah. Ia dilaksanakan secara berbeza daripada jenis rentetan, yang mewakili rentetan tidak berubah.

Memandangkan mengubah suai objek rentetan menghasilkan salinan, mengubah suai objek rentetan berulang kali boleh mengakibatkan kehilangan prestasi. Untuk pengulangan kecil ia boleh diabaikan, tetapi untuk gelung besar ia boleh menjadi penting. StringBuilder menyediakan alternatif yang cekap untuk mengubah suai rentetan dengan menambahkan, memadam, menggantikan atau memasukkan aksara.

StringBuilder mengekalkan penimbal dalaman untuk memegang aksara. Jika terdapat ruang kosong dalam penimbal, data baharu akan dilampirkan. Jika tidak, ia mencipta penimbal baharu, menyalin data lama ke penimbal baharu, dan kemudian menambahkan data.

var sb = new StringBuilder();
for (int i = 0; i < 10; i++){
   sb.Append("a");
}
Console.WriteLine(sb.ToString()); // prints aaaaaaaaaa
Salin selepas log masuk

Berikut ialah cara berbeza untuk membina objek StringBuilder.

// Initialize a new instance of StringBuilder
var sb1 = new StringBuilder();

// Initialize a new instance of StringBuilder using the given capacity
var sb2 = new StringBuilder(capacity: 10);

// Initialize a new instance of StringBuilder with the given string
var sb3 = new StringBuilder(value: "Hello World");

// Initialize a new instance of StringBuilder with the given capacity and the maximum capacity it can grow to
var sb4 = new StringBuilder(capacity: 20, maxCapacity: 10);

// Initialize a new instance of StringBuilder with the given string and capacity
var sb5 = new StringBuilder(value: "Hello", capacity: 20);

// Initialize a new instance of StringBuilder from the given substring and capacity
var sb6 = new StringBuilder(value: "Hello World", startIndex: 0, length: 5, capacity: 20);
Salin selepas log masuk

Kelas StringBuilder mempunyai sifat Length yang menunjukkan bilangan aksara yang dimiliki objek pada masa ini. Apabila lebih banyak aksara ditambahkan pada objek, panjangnya bertambah sehingga ia mencapai kapasitinya, yang mentakrifkan bilangan maksimum aksara yang boleh dikandung oleh objek pada masa ini.

Jika bilangan aksara yang ditambah menyebabkan panjang melebihi kapasiti semasa, kelas memperuntukkan memori baharu, menggabungkan kapasitinya. Aksara baharu kemudiannya ditambahkan pada objek dan sifat Panjangnya dilaraskan.

StringBuilder terus menambah memori tambahan secara dinamik sehingga nilai sifat MaxCapacity dicapai. Selepas itu, tiada lagi memori boleh diperuntukkan untuk objek tersebut. Jika anda cuba menambah lebih banyak data pada objek, pengecualian ArgumentOutOfRangeException atau OutOfMemoryException dilemparkan.

StringBuilder menyediakan kaedah berikut untuk mengubah suai rentetan dengan mudah.

  • Tambah - Menambah perwakilan rentetan objek yang ditentukan pada kejadian ini.

  • AppendFormat< /strong> - Menambah rentetan yang dikembalikan dengan memproses rentetan format kompaun (mengandungi sifar atau lebih item format) pada kejadian ini. Setiap item format digantikan dengan perwakilan rentetan parameter objek yang sepadan. .

  • AppendLine - Menambahkan penamat baris lalai pada penghujung objek StringBuilder semasa.

  • Clear - Mengalih keluar semua aksara daripada contoh StringBuilder semasa.

  • CopyTo - Menyalin aksara ke julat aksara sasaran atau tatasusunan aksara.

  • EnsureCapacity − Memastikan kapasiti contoh StringBuilder ini sekurang-kurangnya nilai yang ditentukan.

  • Sama − Mengembalikan benar jika tika ini dan tika yang disediakan mempunyai nilai rentetan, Kapasiti dan MaxCapacity yang sama.

  • GetChunks - Mengembalikan objek yang boleh digunakan untuk mengulangi ketulan aksara.

  • Insert - Sisipkan perwakilan rentetan objek yang ditentukan ke dalam contoh ini pada kedudukan aksara yang ditentukan.

  • padam - ​​Mengalih keluar julat aksara yang ditentukan daripada tika ini.

  • Ganti - Menggantikan semua kejadian aksara atau rentetan yang ditentukan dalam kejadian ini dengan aksara atau rentetan lain yang ditentukan.

  • ToString - Menukar tika semasa kepada rentetan.

  • Contoh Demonstrasi Langsung

    using System;
    using System.Text;
    class Program{
       static void Main(string[] args){
          string word = "aaabbbccc";
          string newWord = word.Replace(&#39;b&#39;, &#39;d&#39;);
          Console.WriteLine(word); // prints aaabbbccc
          Console.WriteLine(newWord); // prints aaadddccc
          var sb = new StringBuilder();
          for (int i = 0; i < 10; i++){
             sb.Append("a");
          }
          Console.WriteLine(sb.ToString()); // prints aaaaaaaaaa
    
          // Initialize a new instance of StringBuilder
          var sb1 = new StringBuilder();
    
          // Initialize a new instance of StringBuilder using the given capacity
          var sb2 = new StringBuilder(capacity: 10);
         
          // Initialize a new instance of StringBuilder with the given string
          var sb3 = new StringBuilder(value: "Hello World");
          // Initialize a new instance of StringBuilder with the given capacity and the    maximum capacity it can grow to
          var sb4 = new StringBuilder(capacity: 20, maxCapacity: 50);
          // Initialize a new instance of StringBuilder with the given string and capacity
          var sb5 = new StringBuilder(value: "Hello", capacity: 20);
    
          // Initialize a new instance of StringBuilder from the given substring and capacity
          var sb6 = new StringBuilder(value: "Hello World", startIndex: 0, length: 5, capacity: 20);
       }
    }
    Salin selepas log masuk
  • Output
aaabbbccc
aaadddccc
aaaaaaaaaa
Salin selepas log masuk

Atas ialah kandungan terperinci Apakah tujuan kelas StringBuilder dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah alternatif untuk membatalkan bahasa C Apakah alternatif untuk membatalkan bahasa C Mar 03, 2025 pm 05:37 PM

Artikel ini meneroka cabaran penentuan penunjuk null dalam C. Ia berpendapat bahawa masalah itu tidak batal sendiri, tetapi penyalahgunaannya. Artikel ini memperincikan amalan terbaik untuk mencegah dereferensi, termasuk pemeriksaan pra-pengertian, penunjuk inisial

Penyusun bahasa C mana yang lebih baik? Penyusun bahasa C mana yang lebih baik? Mar 03, 2025 pm 05:39 PM

Artikel ini membimbing pemula untuk memilih pengkompil C. Ia berpendapat bahawa GCC, kerana kemudahan penggunaannya, ketersediaan yang luas, dan sumber yang luas, adalah yang terbaik untuk pemula. Walau bagaimanapun, ia juga membandingkan GCC, Clang, MSVC, dan TCC, yang menonjolkan perbezaan mereka

Cara menambah pengkompil C peringkat seterusnya Cara menambah pengkompil C peringkat seterusnya Mar 03, 2025 pm 05:44 PM

Artikel ini menerangkan cara membuat aksara baru dalam C menggunakan urutan \ n Escape dalam Printf dan meletakkan fungsi. Ia memperincikan fungsi dan menyediakan contoh kod yang menunjukkan penggunaannya untuk pecah talian dalam output.

Adakah Null masih penting dalam pengaturcaraan moden dalam bahasa C? Adakah Null masih penting dalam pengaturcaraan moden dalam bahasa C? Mar 03, 2025 pm 05:35 PM

Artikel ini menekankan kepentingan berterusan null dalam pengaturcaraan C moden. Walaupun kemajuan, null tetap penting untuk pengurusan penunjuk yang jelas, mencegah kesalahan segmentasi dengan menandakan ketiadaan alamat memori yang sah. Prac terbaik

Apakah versi web penyusun bahasa C? Apakah versi web penyusun bahasa C? Mar 03, 2025 pm 05:42 PM

Artikel ini mengkaji semula penyusun dalam talian untuk pemula, memberi tumpuan kepada kemudahan penggunaan dan keupayaan debug. Onlineegdb dan Repl.It diserlahkan untuk antara muka mesra pengguna dan alat debugging yang berguna. Pilihan lain seperti programz dan penyusunan

C Laman Web Pengaturcaraan Dalam Talian C Ringkasan Laman Web Rasmi C Laman Web Pengaturcaraan Dalam Talian C Ringkasan Laman Web Rasmi Mar 03, 2025 pm 05:41 PM

Artikel ini membandingkan platform pengaturcaraan dalam talian C, menonjolkan perbezaan ciri -ciri seperti alat debugging, fungsi IDE, pematuhan standard, dan had memori/pelaksanaan. Ia berpendapat bahawa platform "terbaik" bergantung kepada keperluan pengguna,

Kaedah Penyalinan Kod oleh Compiler Bahasa C Kaedah Penyalinan Kod oleh Compiler Bahasa C Mar 03, 2025 pm 05:43 PM

Artikel ini membincangkan penyalinan kod yang efisien dalam c ides. Ia menekankan bahawa penyalinan adalah fungsi IDE, bukan ciri pengkompil, dan strategi butiran untuk kecekapan yang lebih baik, termasuk menggunakan alat pemilihan IDE, lipatan kod, carian/menggantikan, templa

Cara menyelesaikan masalah tidak muncul tetingkap output oleh pengkompil bahasa C Cara menyelesaikan masalah tidak muncul tetingkap output oleh pengkompil bahasa C Mar 03, 2025 pm 05:40 PM

Artikel ini menyelesaikan masalah tingkap output yang hilang dalam kompilasi program C. Ia meneliti sebab -sebab seperti gagal menjalankan kesilapan, kesilapan program, tetapan penyusun yang salah, proses latar belakang, dan penamatan program yang cepat. Penyelesaian melibatkan ch

See all articles