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