ホームページ >バックエンド開発 >C++ >string.replaceがc#で私の文字列を変更しないのはなぜですか?

string.replaceがc#で私の文字列を変更しないのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-28 19:21:09309ブラウズ

Why Doesn't String.Replace Modify My String in C#?

c#文字列の不変性とstring.replace()

C#開発者の一般的な混乱の原因は、String.Replace()メソッドの動作です。 多くの人が元の文字列を変更することを期待していますが、そうではありません。 これは、C#の文字列が不変だからです

"C:\Users\Desktop\Project\bin\Debug"に置き換えて"C:\Users\Desktop\Project\Resources\People"に変更したいとしましょう。 のような試み:"\bin\Debug" "\Resources\People"

  1. path.Replace(@"\bin\Debug", @"\Resource\People");
  2. path.Replace("\bin\Debug", "\Resource\People");
  3. は、元の
文字列を変更できません。 理由?

pathString.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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。