1

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

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

3 回答 3

4

您没有分配回字符串(这也不是必需的)这样做 -

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

来自MSDN

字符串是不可变的——字符串对象的内容在创建对象后不能更改,尽管语法使它看起来好像您可以这样做。例如,当您编写此代码时,编译器实际上会创建一个新的字符串对象来保存新的字符序列,并将该新对象分配给 b。然后字符串“h”就可以进行垃圾回收了。

于 2014-04-24T05:53:37.083 回答
2

您还可以使用:

names.ForEach(x => Console.WriteLine(x.ToUpper()));

另外,您必须知道:

x.ToUpper();在内存中创建新对象。并返回此字符串转换为大写的副本。因此,您必须将其分配给一个新变量:

string X = x.ToUpper();
于 2014-04-24T05:54:54.437 回答
0

字符串是不可变的。因此创建了一个新字符串,您需要将其分配给x.

    foreach (string x in names)
    {
        var y = x.ToUpper();
        Console.WriteLine("{0}", y);
    }
于 2014-04-24T05:54:36.883 回答