String.Copyメソッドは文字列の複製を行う静的メソッドです。 見かけ上の動作は文字列変数の単なる代入と似ていますが、Copyメソッドでは指定された文字列と同じ内容の新しいインスタンスが作成される点が異なります。
String.Copyメソッドを使って文字列インスタンスの複製を作成する
using System;
class Sample {
static void Main()
{
var s1 = "foo";
string s2;
string s3;
s2 = s1; // 文字列s1をs2に代入する
s3 = String.Copy(s1); // 文字列s1の複製を作成し、s3に代入する
Console.WriteLine(s1);
Console.WriteLine("{0} {1}", s2, Object.ReferenceEquals(s2, s1)); // s1とs2は同一のインスタンスへの参照となる
Console.WriteLine("{0} {1}", s3, Object.ReferenceEquals(s3, s1)); // s1とs3は同一の文字列だが異なるインスタンスへの参照となる
}
}
実行結果
foo foo True foo False
代入と複製の違い、参照の比較についてはオブジェクトの複製や値型と参照型 §.同値性・同一性の比較などを参照してください。