String.Copy
, CopyTo
Usually a string
does not need copying. We can use literals, or the strings returned by methods like Replace
or ToString
.
With Copy, we copy an existing string
and get a new string
. With CopyTo
we copy the characters of a string
into a Char
array. We specify an index and length.
The String.Copy
method receives a string
and returns a copy of that string
. This is a shared method—we do not call it on a string
instance.
ReferenceEquals
to see if two variables point to the same reference. String.Copy
returns a separate, new string
.Module Module1 Sub Main() Dim value As String = "cat" ' Use String.Copy to copy a string. Dim valueCopied As String = String.Copy(value) ' The copy has a different reference. If Not ReferenceEquals(value, valueCopied) Then Console.WriteLine("Not same reference") End If End Sub End ModuleNot same reference
CopyTo
This method has nothing in common with String.Copy
. CopyTo
is an instance method and it copies the string
's characters to a char
array.
string
to a 3-element char
array. We then use For-Each
to display the array's contents.Module Module1 Sub Main() Dim value As String = "dog" ' A 3-element char array. Dim destination(2) As Char ' Copy string to the destination array. value.CopyTo(0, destination, 0, 3) ' Loop over the resulting char array. For Each letter As Char In destination Console.WriteLine(letter) Next End Sub End Moduled o g
The String.Copy
and CopyTo
methods provide ways to get the contents of strings and put them in new objects. CopyTo
is more useful—it helps use char
arrays.
As developers we rarely need to use String.Copy
. But it is helpful to know it exists. To reduce memory usage, it is best to reuse existing strings.