> 백엔드 개발 > C#.Net 튜토리얼 > C#에서 StringBuilder 클래스의 목적은 무엇입니까?

C#에서 StringBuilder 클래스의 목적은 무엇입니까?

WBOY
풀어 주다: 2023-09-09 16:53:02
앞으로
971명이 탐색했습니다.

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

C#에서 문자열은 변경할 수 없습니다. 즉, 문자열은 일단 생성되면 수정할 수 없습니다. 문자열을 수정하면 수정 사항이 포함된 새 문자열이 반환되지만 원래 문자열은 변경되지 않습니다.

string word = "aaabbbccc";
string newWord = word.Replace('b', 'd');
Console.WriteLine(word); // prints aaabbbccc
Console.WriteLine(newWord); // prints aaadddccc
로그인 후 복사

StringBuilder 클래스는 수정 가능한 문자열과 유사한 객체, 즉 변경 가능한 문자열을 나타냅니다. 불변 문자열을 표현하는 스트링 타입과 다르게 구현됩니다.

문자열 객체를 수정하면 복사본이 생성되므로, 문자열 객체를 반복적으로 수정하면 성능이 저하될 수 있습니다. 작은 반복의 경우 무시할 수 있지만 큰 루프의 경우 중요할 수 있습니다. StringBuilder는 문자를 추가, 삭제, 교체 또는 삽입하여 문자열을 수정하는 효율적인 대안을 제공합니다.

StringBuilder는 문자를 보관하기 위해 내부 버퍼를 유지합니다. 버퍼에 여유 공간이 있으면 새 데이터가 추가됩니다. 그렇지 않으면 새 버퍼를 만들고 이전 데이터를 새 버퍼에 복사한 다음 데이터를 추가합니다.

var sb = new StringBuilder();
for (int i = 0; i < 10; i++){
   sb.Append("a");
}
Console.WriteLine(sb.ToString()); // prints aaaaaaaaaa
로그인 후 복사

다음은 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);
로그인 후 복사

StringBuilder 클래스에는 객체의 현재 문자 수를 나타내는 길이 속성이 있습니다. 개체에 더 많은 문자가 추가되면 해당 용량에 도달할 때까지 길이가 늘어납니다. 이는 개체가 현재 포함할 수 있는 최대 문자 수를 정의합니다.

추가된 문자 수로 인해 길이가 현재 용량을 초과하는 경우 클래스는 용량을 결합하여 새 메모리를 할당합니다. 그런 다음 새 문자가 개체에 추가되고 길이 속성이 조정됩니다.

StringBuilder는 MaxCapacity 속성 값에 도달할 때까지 동적으로 추가 메모리를 계속 추가합니다. 그 후에는 해당 개체에 더 이상 메모리를 할당할 수 없습니다. 개체에 더 많은 데이터를 추가하려고 하면 ArgumentOutOfRangeException 또는 OutOfMemoryException 예외가 발생합니다.

StringBuilder는 문자열을 쉽게 수정할 수 있도록 다음과 같은 메서드를 제공합니다.

  • Append - 지정된 개체의 문자열 표현을 이 인스턴스에 추가합니다.

  • AppendFormat< /strong> - 복합 형식 문자열(0개 이상의 형식 항목 포함)을 처리하여 반환된 문자열을 이 인스턴스에 추가합니다. 각 형식 항목은 해당 개체 매개변수의 문자열 표현으로 대체됩니다.

  • AppendJoin - 각 멤버 사이에 지정된 구분 기호를 사용하여 제공된 배열에 있는 요소의 문자열 표현 개체를 조인하고 결과를 문자열 작성기의 현재 인스턴스에 추가합니다.

  • AppendLine - 현재 StringBuilder 개체의 끝에 기본 줄 종결자를 추가합니다.

  • Clear - 현재 StringBuilder 인스턴스에서 모든 문자를 제거합니다.

  • CopyTo - 문자를 대상 문자 범위 또는 문자 배열에 복사합니다.

  • EnsureCapacity - 이 StringBuilder 인스턴스의 용량이 최소한 지정된 값인지 확인합니다.

  • Equals − 이 인스턴스와 제공된 인스턴스의 문자열, 용량 및 MaxCapacity 값이 동일한 경우 true를 반환합니다.

  • GetChunks - 문자 덩어리를 반복하는 데 사용할 수 있는 개체를 반환합니다.

  • Insert - 지정된 개체의 문자열 표현을 이 인스턴스의 지정된 문자 위치에 삽입합니다.

  • delete - 이 인스턴스에서 지정된 문자 범위를 제거합니다.

  • Replace - 이 인스턴스에서 지정된 문자 또는 문자열의 모든 항목을 다른 지정된 문자 또는 문자열로 바꿉니다.

  • ToString - 현재 인스턴스를 문자열로 변환합니다.

라이브 시연

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);
   }
}
로그인 후 복사

Output

aaabbbccc
aaadddccc
aaaaaaaaaa
로그인 후 복사

위 내용은 C#에서 StringBuilder 클래스의 목적은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿