Toach方法,用于foreach循环中的字符串不起作用

时间:2014-04-24 05:52:33

标签: c# arrays string loops toupper

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

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

3 个答案:

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