我有一个名称字符串数组,我希望所有名称都大写。这是我的简单代码,但它对名称没有任何作用。
foreach (string x in names)
{
x.ToUpper();
Console.WriteLine("{0}", x);
}
您没有分配回字符串(这也不是必需的)这样做 -
foreach (string x in names)
{
Console.WriteLine("{0}", x.ToUpper());
}
来自MSDN
字符串是不可变的——字符串对象的内容在创建对象后不能更改,尽管语法使它看起来好像您可以这样做。例如,当您编写此代码时,编译器实际上会创建一个新的字符串对象来保存新的字符序列,并将该新对象分配给 b。然后字符串“h”就可以进行垃圾回收了。
您还可以使用:
names.ForEach(x => Console.WriteLine(x.ToUpper()));
另外,您必须知道:
x.ToUpper();
在内存中创建新对象。并返回此字符串转换为大写的副本。因此,您必须将其分配给一个新变量:
string X = x.ToUpper();
字符串是不可变的。因此创建了一个新字符串,您需要将其分配给x
.
foreach (string x in names)
{
var y = x.ToUpper();
Console.WriteLine("{0}", y);
}