foreach循环中字符串的ToUpper方法不起作用

本文关键字:ToUpper 方法 不起作用 字符串 循环 foreach | 更新日期: 2023-09-27 17:59:39

我有一个名称的字符串数组,我希望所有名称都是大写的。这是我的简单代码,但它对名称没有任何作用。

foreach (string x in names)
    {
        x.ToUpper();
        Console.WriteLine("{0}", x);
    }

foreach循环中字符串的ToUpper方法不起作用

您没有分配回字符串(这也不是必需的)执行此操作-

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);
    }