サーチ…
System.Stringクラス
C#(および.NET)では、文字列はSystem.Stringクラスで表されます。 string
キーワードは、このクラスのエイリアスです。
System.Stringクラスは不変です。つまり、一度作成されると状態は変更できません。
したがって、Substring、Remove、Replace、 +
operatorなどを使った連結のような文字列に対して実行するすべての操作は、新しい文字列を作成して返します。
デモンストレーションについては、次のプログラムを参照してください。
string str = "mystring";
string newString = str.Substring(3);
Console.WriteLine(newString);
Console.WriteLine(str);
これはそれぞれstring
とmystring
ます。
文字列と不変性
変更不可能な型は、メモリ内の既存のオブジェクトを変更するのではなく、変更されたときにメモリ内のオブジェクトの新しいバージョンを作成する型です。これの最も簡単な例は組み込みのstring
型です。
次のコードを見て、 "Hello"という単語に "world"を追加します。
string myString = "hello";
myString += " world";
この場合、メモリ内で何が起こっているかは、2行目のstring
に追加すると新しいオブジェクトが作成されるということです。これを大きなループの一部として実行すると、アプリケーションでパフォーマンスの問題が発生する可能性があります。
string
の変更可能な同等物はStringBuilder
次のコードを実行する
StringBuilder myStringBuilder = new StringBuilder("hello");
myStringBuilder.append(" world");
これを実行すると、メモリ内のStringBuilder
オブジェクト自体が変更されます。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow