StringBuilder.Chars[Int32] Properti
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mendapatkan atau mengatur karakter pada posisi karakter yang ditentukan dalam instans ini.
public:
property char default[int] { char get(int index); void set(int index, char value); };
public char this[int index] { get; set; }
member this.Chars(int) : char with get, set
Default Public Property Chars(index As Integer) As Char
Parameter
- index
- Int32
Posisi karakter.
Nilai Properti
Karakter Unicode pada posisi index
.
Pengecualian
index
berada di luar batas instans ini saat mengatur karakter.
index
berada di luar batas instans ini saat mendapatkan karakter.
Keterangan
Parameter index
adalah posisi karakter dalam StringBuilder. Karakter pertama dalam string adalah pada indeks 0. Panjang string adalah jumlah karakter yang dikandungnya. Karakter instans terakhir yang StringBuilder dapat diakses adalah pada indeks Length - 1.
Chars[Int32] adalah properti default kelas StringBuilder . Di C#, ini adalah pengindeks. Ini berarti bahwa karakter individual dapat diambil dari Chars[Int32] properti seperti yang ditunjukkan dalam contoh berikut, yang menghitung jumlah karakter alfabet, spasi putih, dan tanda baca dalam string.
using System;
using System.Text;
public class Example
{
public static void Main()
{
int nAlphabeticChars = 0;
int nWhitespace = 0;
int nPunctuation = 0;
StringBuilder sb = new StringBuilder("This is a simple sentence.");
for (int ctr = 0; ctr < sb.Length; ctr++) {
char ch = sb[ctr];
if (Char.IsLetter(ch)) { nAlphabeticChars++; continue; }
if (Char.IsWhiteSpace(ch)) { nWhitespace++; continue; }
if (Char.IsPunctuation(ch)) nPunctuation++;
}
Console.WriteLine("The sentence '{0}' has:", sb);
Console.WriteLine(" Alphabetic characters: {0}", nAlphabeticChars);
Console.WriteLine(" White-space characters: {0}", nWhitespace);
Console.WriteLine(" Punctuation characters: {0}", nPunctuation);
}
}
// The example displays the following output:
// The sentence 'This is a simple sentence.' has:
// Alphabetic characters: 21
// White-space characters: 4
// Punctuation characters: 1
open System
open System.Text
let mutable nAlphabeticChars = 0
let mutable nWhitespace = 0
let mutable nPunctuation = 0
let sb = StringBuilder "This is a simple sentence."
for i = 0 to sb.Length - 1 do
let ch = sb[i]
if Char.IsLetter ch then
nAlphabeticChars <- nAlphabeticChars + 1
elif Char.IsWhiteSpace ch then
nWhitespace <- nWhitespace + 1
elif Char.IsPunctuation ch then
nPunctuation <- nPunctuation + 1
printfn $"The sentence '{sb}' has:"
printfn $" Alphabetic characters: {nAlphabeticChars}"
printfn $" White-space characters: {nWhitespace}"
printfn $" Punctuation characters: {nPunctuation}"
// The example displays the following output:
// The sentence 'This is a simple sentence.' has:
// Alphabetic characters: 21
// White-space characters: 4
// Punctuation characters: 1
Imports System.Text
Module Example
Public Sub Main()
Dim nAlphabeticChars As Integer = 0
Dim nWhitespace As Integer = 0
Dim nPunctuation As Integer = 0
Dim sb As New StringBuilder("This is a simple sentence.")
For ctr As Integer = 0 To sb.Length - 1
Dim ch As Char = sb(ctr)
If Char.IsLetter(ch) Then nAlphabeticChars += 1 : Continue For
If Char.IsWhiteSpace(ch) Then nWhitespace += 1 : Continue For
If Char.IsPunctuation(ch) Then nPunctuation += 1
Next
Console.WriteLine("The sentence '{0}' has:", sb)
Console.WriteLine(" Alphabetic characters: {0}", nAlphabeticChars)
Console.WriteLine(" White-space characters: {0}", nWhitespace)
Console.WriteLine(" Punctuation characters: {0}", nPunctuation)
End Sub
End Module
' The example displays the following output:
' The sentence 'This is a simple sentence.' has:
' Alphabetic characters: 21
' White-space characters: 4
' Punctuation characters: 1
Menggunakan pengindeksan berbasis karakter dengan Chars[] properti bisa sangat lambat dalam kondisi berikut:
- Instansnya StringBuilder besar (misalnya, terdiri dari beberapa puluh ribu karakter).
- Itu StringBuilder adalah "chunky." Artinya, panggilan berulang ke metode seperti StringBuilder.Append telah secara otomatis memperluas properti objek StringBuilder.Capacity dan mengalokasikan potongan memori baru ke dalamnya.
Performa sangat terpengaruh karena setiap akses karakter memandu seluruh daftar gugus yang ditautkan untuk menemukan buffer yang benar untuk diindeks.
Catatan
Bahkan untuk objek "gugus" StringBuilder besar, menggunakan Chars[] properti untuk akses berbasis indeks ke satu atau sejumlah kecil karakter memiliki dampak performa yang dapat diabaikan; biasanya, ini adalah operasi O(n ). Dampak performa yang signifikan terjadi ketika mengulangi karakter dalam StringBuilder objek, yang merupakan operasi O(n^2 ).
Jika Anda mengalami masalah performa saat menggunakan pengindeksan berbasis karakter dengan StringBuilder objek, Anda dapat menggunakan salah satu solusi berikut:
Konversikan StringBuilder instans menjadi String dengan memanggil ToString metode , lalu akses karakter dalam string.
Salin konten objek yang ada StringBuilder ke objek pra-ukuran StringBuilder baru. Performa meningkat karena objek baru StringBuilder tidak gugus. Contohnya:
// sbOriginal is the existing StringBuilder object var sbNew = new StringBuilder(sbOriginal.ToString(), sbOriginal.Length);
' sbOriginal is the existing StringBuilder object Dim sbNew = New StringBuilder(sbOriginal.ToString(), sbOriginal.Length)
Atur kapasitas StringBuilder awal objek ke nilai yang kira-kira sama dengan ukuran maksimum yang diharapkan dengan memanggil StringBuilder(Int32) konstruktor. Perhatikan bahwa ini mengalokasikan seluruh blok memori bahkan jika StringBuilder jarang mencapai kapasitas maksimumnya.