Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah StringBuilder dalam C#

Apakah StringBuilder dalam C#

WBOY
WBOYasal
2024-09-03 15:22:231062semak imbas

Artikel berikut, Apa itu StringBuilder dalam C# menyediakan garis besar untuk StringBuilder dalam C#. Sebelum bercakap tentang StringBuilder, mari kita lihat dahulu konsep kebolehubah, jika anda mengenali Strings maka mungkin anda akan mengetahui bahawa rentetan mempunyai sifat tidak berubah iaitu setiap kali objek baru dicipta dan lokasi memori baru disediakan kepadanya dan oleh itu setiap kali perubahan data berlaku, data yang diubah akan diletakkan ke lokasi memori baharu dan memastikan rentetan asal selamat. Sekarang, mari kita berfikir sedikit. Apakah kes penggunaan pendekatan ini? Nah, jika anda menetapkan kelayakan seperti butiran pangkalan data, bukti kelayakan lain yang tidak akan ditukar dalam masa sementara, maka anda boleh menggunakan String untuk memastikannya selamat. Kini terdapat satu lagi jenis objek, yang dipanggil StringBuilder, iaitu sifat boleh ubah, justeru menjimatkan memori untuk anda dengan membenarkan anda mengubah suai data dalam lokasi memori semasa sahaja. Perkara sebegitu berguna apabila anda ingin mempunyai beberapa operasi tambahan untuk menghampiri anda.

Takrifan StringBuilder dalam C#

StringBuilder ialah kelas yang mewakili set aksara boleh ubah dan ia merupakan objek Sistem. Ruang nama teks. StringBuilder ialah objek dinamik dalam alam semula jadi dan oleh itu StringBuilder tidak mencipta objek baharu dalam ingatan, sebaliknya ia mengembangkan memori yang diperlukan secara dinamik untuk memasukkan rentetan yang diubah suai atau baharu. Pembina rentetan tidak kelihatan meyakinkan dalam persekitaran berbilang benang kerana ia boleh mengakibatkan ketidakkonsistenan data apabila ditulis oleh berbilang benang jika konsep berbilang benang tidak digunakan dengan betul.

Memahami StringBuilder

1. Kini tibalah titik di mana seseorang akan memahami hasil yang boleh menyebabkan kebolehubah, anda harus memilih untuk menggunakan kebolehubah hanya jika set data yang sama akan berkembang secara dinamik, Mari kita ambil contoh untuk memahami senario ini.

2. Jika anda mengambil beberapa data daripada borang HTML yang akan disimpan ke dalam jadual berdasarkan beberapa logik perniagaan, yang pertama kali akan mengesahkan data, dalam kes itu, anda boleh mencipta objek StringBuilder dan menambah semua medan data, bersama-sama dengan lajur pangkalan data dan akhirnya boleh melaksanakan pertanyaan sisipan untuk meletakkan semuanya dalam pangkalan data, kelebihan pendekatan sedemikian ialah sepanjang masa lokasi memori baharu tidak sepatutnya diperuntukkan. Dan C# akan menguruskan satu lokasi memori itu dengan pengembangan dinamik untuk anda.

3. Anda juga boleh menentukan kapasiti nombor StringBuilder dalam C#.

StringBuilder s=new StringBuilder(10);
StringBuilder s=new StringBuilder("object value", 15);

4. Sifat StringBuilder.length menunjukkan bilangan aksara yang terdapat pada objek StringBuilder pada masa ini. Jika anda menambah aksara pada objek StringBuilder, panjangnya akan bertambah sehingga ia sama dengan saiz StringBuilder.

Bagaimanakah StringBuilder dalam C# menjadikan kerja begitu mudah?

Terdapat kaedah tertentu yang disediakan dalam C#, yang memudahkan kerja dengan StringBuilder. Kelas StringBuilder menyediakan kaedah berikut untuk memudahkan tugas pembangun –

  • Tambah( String val ) – digunakan untuk menambahkan nilai rentetan objek pada penghujung objek StringBuilder semasa.

Contoh –

classStringBuilder a = new StringBuilder("val",10);
a.append("us")

apabila anda melakukan console.writeline(a), ia akan memberi anda "nilai" hasil

  • Tambah( Format ) – digunakan untuk memformat rentetan input ke dalam format yang ditentukan dan selepas itu menambahnya.

Contoh –

StringBuilder a = new StringBuilder("val",10);
a.appendFormat("{0:C}",10)

Sila laksanakan ini dan analisa variasi daripada apa yang telah dilakukan dalam kaedah append() mudah.

  • Sisipkan( indeks int, nilai rentetan ) – memasukkan rentetan pada indeks yang ditentukan dalam objek StringBuilder.

Contoh

StringBuilder a = new StringBuilder("val",10); a.insert(4,"ue")

Laksanakan dan lihat hasilnya

  • Terdapat kaedah lain juga, dan banyak varian kaedah yang disebutkan di atas, bagi mereka sila rujuk pautan ini

Apa yang boleh anda lakukan dengan StringBuilder?

  • StringBuilder mempunyai banyak sifat, kaedah dan pembina untuk menangani masalah pengekodan seperti yang kita lihat StringBuilder() pembina, terdapat varian seperti StringBuilder( String, Int32, Int32, Int32 ) – ini akan memulakan contoh baharu kelas StringBuilder daripada subrentetan yang disebutkan dan kapasitinya.
  • Terdapat sifat seperti – panjang, kapasiti, kapasiti maks.
  • Terdapat kaedah seperti – appendLine(), Equals( object ), GetHashCode(), GetType(), Remove( int32, int32 ), Replace( char, char ), toString().

Ini semua membuat tugasan untuk mengekodkan masalah perniagaan biasa dengan mudah dan dengan lebih sedikit baris kod.

Bekerja dengan StringBuilder dalam C#?

  • Instansiasi objek StringBuilder dengan memanggil pembina StringBuilder ( Int32, Int32 ) boleh menjadikan panjang dan kapasiti contoh StringBuilder berkembang melebihi nilai harta MaxCapacity. Terutamanya ini boleh berlaku apabila anda memanggil kaedah Append ( String ) dan AppendFormat ( String, Object ) untuk menambahkan rentetan kecil.
  • Jika bilangan aksara yang ditambah menyebabkan panjang objek StringBuilder melebihi kapasiti semasanya, memori baharu diperuntukkan, nilai sifat Kapasiti digandakan, aksara baharu ditambahkan pada objek StringBuilder dan sifat Panjangnya ialah dilaraskan.
  • Setelah kapasiti maksimum dicapai, sebarang peruntukan memori selanjutnya tidak boleh dilakukan untuk objek StringBuilder dan jika dalam apa jua keadaan pengembangan melebihi kapasiti maksimumnya dilakukan, kemungkinan besar ia akan membuang mana-mana daripada dua ralat yang disebutkan.

ArgumentOutOfRangeException.
OutOfMemoryException.

Kelebihan

  • Tiada berbilang lokasi memori untuk dijaga oleh C#.
  • Peluasan objek dinamik sehingga kapasiti.
  • Ia boleh ditukar kepada String dan sebaliknya.

Mengapa kita harus menggunakan StringBuilder dalam C#?

  • Terlihat bahawa rentetan mengikuti operasi concat dan StringBuilder mengikuti operasi tambah dan tambah
  • nampaknya lebih pantas daripada concat kerana concat perlu memperuntukkan lokasi memori baharu yang tidak perlu dilakukan oleh StringBuilder.
  • Jika data bersifat sementara iaitu tidak kekal dan akan berbeza-beza antara panggilan yang berbeza maka StringBuilder boleh digunakan, dengan syarat anda bekerja tanpa multithreading, jika tidak, keselamatan benang akan menjadi isu.

Mengapa kita memerlukan StringBuilder dalam C#?

Nah, kita telah membincangkan perkara ini dalam perkara di atas sahaja dan seseorang boleh menyimpulkan di sini kes penggunaan di mana ini boleh menjadi berguna.

Kesimpulan

Oleh itu, kami melihat perbezaan antara rentetan dan StringBuilder, bila hendak menggunakan apa dan apakah cabaran atau pengecualian yang boleh muncul semasa bekerja dengan StringBuilder.

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

Kenyataan:
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
Artikel sebelumnya:C# System.IOArtikel seterusnya:C# System.IO