首页 > 后端开发 > C++ > 为什么String.Replace在C#中修改我的字符串?

为什么String.Replace在C#中修改我的字符串?

Patricia Arquette
发布: 2025-01-28 19:21:09
原创
250 人浏览过

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

将无法更改原始path字符串。 原因? String.Replace()> 返回一个带有替换的新字符串;它不会改变原始。

>

解决方案:重新分配

正确使用String.Replace()>,您必须将返回的修改后字符串分配给一个变量:>

<code class="language-csharp">string path = "C:\Users\Desktop\Project\bin\Debug";
string newPath = path.Replace("\bin\Debug", "\Resources\People"); 
// newPath now holds the modified string.</code>
登录后复制
>您还可以覆盖原始变量:

<code class="language-csharp">path = path.Replace("\bin\Debug", "\Resources\People");
// path now holds the modified string.</code>
登录后复制

理解不变性

这种行为源于c#中字符串的基本不变性。 似乎修改字符串的任何操作实际上都会创建一个新的字符串对象。这适用于所有字符串方法,影响内存管理。 C#文档清楚地说明了这一特征。 在使用字符串时,请记住这一点。

以上是为什么String.Replace在C#中修改我的字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板