サーチ…


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);

これはそれぞれstringmystringます。

文字列と不変性

変更不可能な型は、メモリ内の既存のオブジェクトを変更するのではなく、変更されたときにメモリ内のオブジェクトの新しいバージョンを作成する型です。これの最も簡単な例は組み込みの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