C#で文字列複写

 参照系の参照を渡した先で変更しても、元が変更されてしまう模様。

・具体例


string str_a = "abc",
str_b = str_a; // 参照を渡す

// 渡した先で変更すると…
str_b = "123";

こうすると、「str_a」「str_b」共に「123」が入っています。

…まぁ、参照を渡しているわけなので、同じポインタをさしている形になるらしく、

当然といえば当然?なお話。





 …はてさて、それではstr_aの値を一旦別に取っておくにはどうするのか。

これまた単純。「System.String.Copy()」を使う。


string str_a = "abc",
str_b = String.Copy( str_a ); // コピーした文字列を渡す

// コピーしたもの(完全に別物)なので、str_aは変化なし
str_b = "123";

こうすると、「str_a -> "abc"」「str_b -> "123"」という内容になる。