不经常但有时我需要String.Trim()用来删除字符串的空格.
如果从上次修剪编码开始的时间比较长,我写道:
string s = " text ";
s.Trim();
Run Code Online (Sandbox Code Playgroud)
并且惊讶为什么s 没有改变.我需要写:
string s = " text ";
s = s.Trim();
Run Code Online (Sandbox Code Playgroud)
为什么是 一些以这种(非常直观)方式设计的字符串方法?字符串有什么特别之处吗?
s.Trim()创建原始字符串的新剪裁版本并返回它而不是存储新版本s.因此,您需要做的是将修剪后的实例存储在变量中:
s = s.Trim();
Run Code Online (Sandbox Code Playgroud)
所有字符串方法和扩展方法都遵循此模式.
字符串是不可变的这一事实与使用此模式的决定无关,而是与字符串保存在内存中的事实有关.此方法可以设计为在内存中创建新的已修改字符串实例,并将该变量指向新实例.
记住,如果你需要对一个字符串进行大量修改,那么最好使用一个StringBuilder类似"可变"字符串的字符,并且它更有效地进行这种操作.