我知道在C#中有一个关于字符串的规则,它说:
当我们创建一个string类型的文本字符串时,我们永远不能改变它的值!当为一个字符串变量赋予不同的值时,第一个字符串将保留在内存中,而变量(作为引用类型)只是获得新字符串的地址。
因此,像这样做:
string a = "aaa";
a = a.Trim(); // Creates a new string
不推荐使用。 但是如果我需要根据用户的偏好对字符串执行一些操作,怎么办呢:
string a = "aaa";
if (doTrim)
a = a.Trim();
if (doSubstring)
a = a.Substring(...);
etc...
如何在不创建新字符串的情况下执行操作? 我考虑通过引用将字符串发送到函数中,方法如下:
void DoTrim(ref string value)
{
value = value.Trim(); // also creates new string
}
但是这也会创建一个新字符串… 有没有一种方法可以在不浪费内存的情况下完成该操作?