Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

เมธอด StringBuilder.CopyTo() ใน C#

เมธอด StringBuilder.CopyTo() ใน C# ใช้คัดลอกตัวอักษรจากส่วนที่ระบุของ StringBuilder ไปยังส่วนที่ระบุของอาเรย์ char ปลายทาง

ไวยากรณ์ (Syntax)

public void CopyTo(int sourceIndex, char[] destination, int destinationIndex, int count);
  • sourceIndex — ตำแหน่งเริ่มต้นใน StringBuilder (zero-based)
  • destination — อาเรย์ char ปลายทาง
  • destinationIndex — ตำแหน่งเริ่มต้นในอาเรย์ปลายทาง
  • count — จำนวนตัวอักษรที่จะคัดลอก

ตัวอย่างที่ 1: คัดลอก 6 ตัวอักษรจากตำแหน่ง 3 ไปยังอาเรย์ตำแหน่ง 2

using System;
using System.Text;

public class Demo
{
    public static void Main()
    {
        StringBuilder strBuilder = new StringBuilder("ghgh78hkjj");
        char c = strBuilder[3];
        Console.WriteLine("String = " + strBuilder);
        Console.WriteLine("Character at index 3 = " + c);

        char[] arr = new char[15];
        strBuilder.CopyTo(3, arr, 2, 6);

        Console.WriteLine("\nCopied String in char array...");
        Console.WriteLine(arr); // แสดง char array ทั้งอาเรย์
    }
}

ผลลัพธ์

String = ghgh78hkjj
Character at index 3 = h
Copied String in char array...
  h78hkj

ตัวอย่างที่ 2: คัดลอกทับอาเรย์ที่มีข้อมูลอยู่แล้ว

using System;
using System.Text;

public class Demo
{
    public static void Main()
    {
        StringBuilder strBuilder = new StringBuilder("JohnWick");
        Console.WriteLine("String = " + strBuilder);

        char[] arr = new char[5] { 'a', 'b', 'c', 'd', 'e' };
        strBuilder.CopyTo(1, arr, 1, 3); // คัดลอก "ohn" ไปที่ index 1

        Console.WriteLine("\nCopied String in char array...");
        Console.WriteLine(arr); // a + ohn + e = "aohne"
    }
}

ผลลัพธ์

String = JohnWick
Copied String in char array...
aohne

สรุป

  • CopyTo() คัดลอกตัวอักษรจาก StringBuilder ไปยัง char[] ที่ระบุ — ไม่คืนค่า (void)
  • อาเรย์ปลายทางต้องมีขนาดเพียงพอ (destinationIndex + count ≤ destination.Length)
  • StringBuilder เป็น mutable string — แก้ไขได้โดยไม่สร้างสตริงใหม่ (เหมาะกับการต่อสตริงมากครั้ง)
  • คุณสมบัติ Chars[int index] (indexer) ใช้เข้าถึง/ตั้งค่าตัวอักษรตำแหน่งใดตำแหน่งหนึ่ง
  • เมธอดคล้ายกัน: ToString() (แปลงเป็น string), ToString(startIndex, length) (substring), Append(), Insert(), Remove(), Replace()

เมื่อไหร่ควรใช้ StringBuilder.CopyTo()?

  • ต้องการคัดลอกส่วนหนึ่งของ StringBuilder ไปยัง char array ที่มีอยู่แล้ว (reuse buffer)
  • ทำงานกับ API ที่รับ char[] (native interop, file I/O, network buffers)
  • ต้องการประสิทธิภาพสูง — หลีกเลี่ยงการสร้าง string/array ใหม่
  • กรณีทั่วไป ใช้ ToString() หรือ ToString(start, len) สะดวกกว่า