gpt4 book ai didi

c# - 将 Trim() 应用于字符串而不分配给变量

转载 作者:太空狗 更新时间:2023-10-29 22:15:53 26 4
gpt4 key购买 nike

是否可以将 Trim() 应用于字符串而不分配给新的或现有的变量?

var myString = "  my string  ";
myString.Trim();

// myString is now value "my string"

不必将其分配给新变量或自身?

var myString = "  my string  ";
myString = myString.Trim();

// myString is now value "my string"

最佳答案

不,那是不可能的(在语言的使用范围内)。

.NET 中的 String 类是不可变的,这意味着特定的字符串永远不会改变。这允许代码在方法之间传递字符串,而不必复制字符串以防止原始字符串发生变化。


该字符串存储在内存中的某个位置,因此如果您继续挖掘它,您可以更改对象的内容,从而更改字符串的值。然而,这违反了字符串在该语言中的工作规则,并且您最终可能会更改在您没有预料到的地方使用的字符串。

String literals 是被编译器 intern 的,这意味着即使你在代码中多处写了 "my string ",编译时也只是一个 string 对象。如果您要更改该字符串,您将在所有使用它的地方更改它。

例子:

string test = "My string";

unsafe {
// Note: example of what NOT TO DO!
fixed (char* p = test) {
*p = 'X';
}
}

string another = "My string";
Console.WriteLine(another);

输出:

Xy string

关于c# - 将 Trim() 应用于字符串而不分配给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32313977/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com