c#文字列の不変性とstring.replace()
C#開発者の一般的な混乱の原因は、String.Replace()
メソッドの動作です。 多くの人が元の文字列を変更することを期待していますが、そうではありません。 これは、C#の文字列が不変だからです
を"C:\Users\Desktop\Project\bin\Debug"
に置き換えて"C:\Users\Desktop\Project\Resources\People"
に変更したいとしましょう。 のような試み:"\bin\Debug"
"\Resources\People"
path.Replace(@"\bin\Debug", @"\Resource\People");
path.Replace("\bin\Debug", "\Resource\People");
path
String.Replace()
交換用の新しい文字列を返します。オリジナルは変更されません。
String.Replace()
string path = "C:\Users\Desktop\Project\bin\Debug";
string newPath = path.Replace("\bin\Debug", "\Resources\People");
// newPath now holds the modified string.
この動作は、C#の弦の基本的な不変性に由来しています。 文字列を変更しているように見える操作は、実際に新しい文字列オブジェクトを作成します。これは、すべての文字列メソッドに適用され、メモリ管理に影響を与えます。 C#ドキュメントは、この特性を明確に述べています。 予期しない結果を避けるために文字列を使用して作業するときはこれを覚えておいてください。以上がstring.replaceがc#で私の文字列を変更しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。