foreach循环中字符串的ToUpper方法不起作用
本文关键字:ToUpper 方法 不起作用 字符串 循环 foreach | 更新日期: 2023-09-27 17:59:39
我有一个名称的字符串数组,我希望所有名称都是大写的。这是我的简单代码,但它对名称没有任何作用。
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);
}