The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

StringBuilder.CopyTo Method

Copies the characters from a specified segment of this instance to a specified segment of a destination Char array.

Namespace:  System.Text
Assembly:  mscorlib (in mscorlib.dll)

public void CopyTo(
	int sourceIndex,
	char[] destination,
	int destinationIndex,
	int count


Type: System.Int32

The starting position in this instance where characters will be copied from. The index is zero-based.

Type: System.Char[]

The array where characters will be copied.

Type: System.Int32

The starting position in destination where characters will be copied. The index is zero-based.

Type: System.Int32

The number of characters to be copied.


destination is null.


sourceIndex, destinationIndex, or count, is less than zero.


sourceIndex is greater than the length of this instance.


sourceIndex + count is greater than the length of this instance.


destinationIndex + count is greater than the length of destination.

The CopyTo method is intended to be used in the rare situation when you need to efficiently copy successive sections of a StringBuilder object to an array. The array should be a fixed size, preallocated, reusable, and possibly globally accessible.

For example, your application could populate a StringBuilder object with a large number of characters then use the CopyTo method to copy small, successive pieces of the StringBuilder object to an array where the pieces are processed. When all the data in the StringBuilder object is processed, the size of the StringBuilder object is set to zero and the cycle is repeated.

The following example demonstrates the CopyTo method.

// This example demonstrates the CopyTo(Int32, Char[], Int32, Int32) method. 

// Typically the destination array is small, preallocated, and global while  
// the StringBuilder is large with programmatically defined data.  
// However, for this example both the array and StringBuilder are small  
// and the StringBuilder has predefined data. 

using System;
using System.Text;

class Sample 
    protected static char[] dest = new char[6];
    public static void Main() 
    StringBuilder src = new StringBuilder("abcdefghijklmnopqrstuvwxyz!");
    dest[1] = ')';
    dest[2] = ' ';

// Copy the source to the destination in 9 pieces, 3 characters per piece.

    Console.WriteLine("\nPiece) Data:");
    for(int ix = 0; ix < 9; ix++)
        dest[0] = ix.ToString()[0];
        src.CopyTo(ix * 3, dest, 3, 3);
        Console.Write("    ");
This example produces the following results:

Piece) Data:
    0) abc
    1) def
    2) ghi
    3) jkl
    4) mno
    5) pqr
    6) stu
    7) vwx
    8) yz!

.NET Framework

Supported in: 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Portable Class Library

Supported in: Portable Class Library

.NET for Windows Store apps

Supported in: Windows 8

.NET for Windows Phone apps

Supported in: Windows Phone 8.1, Windows Phone Silverlight 8.1, Windows Phone Silverlight 8

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

© 2014 Microsoft