Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用';foreach&x27;C语言中带stringArray的循环#_C#_Arrays - Fatal编程技术网

C# 使用';foreach&x27;C语言中带stringArray的循环#

C# 使用';foreach&x27;C语言中带stringArray的循环#,c#,arrays,C#,Arrays,我正在编写一个程序,它应该在foreach循环中显示数组中的项 我想通过向每个元素添加字符串“sad”来更改数组的元素,但是当运行程序时,数组保持不变 namespace ConsoleApplication3 { class Program { static void Main(string[] args) { string[] stringArray = {"hey", "Tom"}; for

我正在编写一个程序,它应该在foreach循环中显示数组中的项

我想通过向每个元素添加字符串“sad”来更改数组的元素,但是当运行程序时,数组保持不变

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] stringArray = {"hey", "Tom"};

            for (int i = 0; i < stringArray.Length; i++ )
            {
                stringArray[i] += "  dad";
                Console.WriteLine(stringArray[i]);
            }

            Array.Resize(ref stringArray, stringArray.Length + 1);

            // Add bob to the last element of the array
            stringArray[stringArray.Length - 1] =" bob";

            foreach (string s in stringArray)
            {
                string b = s + "sad";
                Console.WriteLine(s);
                //Console.WriteLine(stringArray);
            }
        }
    }
}
命名空间控制台应用程序3
{
班级计划
{
静态void Main(字符串[]参数)
{
string[]stringArray={“嘿”,“汤姆”};
对于(int i=0;i
在代码中任何时候都不能更改数组中的值。从数组中的每个值创建一个新的
字符串
,并与字符串
“sad”
连接

解决方案

不能为每个
变量更改
。您将收到如下消息:

无法分配给“s”,因为它是“foreach迭代变量”

相反,只需为
循环设置一个简单的

for(int x = 0; x < stringArray.length; x++)
{
     stringArray[x] = stringArray[x] + "sad";
}
for(int x=0;x
看看这部分代码:

string b = s + "sad";
Console.WriteLine(s);
您正在将
s
中的字符串与
字符串“sad”
连接起来,并存储在变量
b
中。然后显示变量
s
的内容。如果要显示变量
b
isntead的内容,则每个字符串的末尾都会有一个
sad

        foreach (string s in stringArray)
        {   
            string b = s + "sad";
            // ...
        }
在这里,您正在创建一个新字符串,它与字符串数组中的字符串完全无关。您尚未更改旧字符串(不能更改;字符串是不可变的)。然后,您只需将这个新的更长的字符串放到地板上-您不需要更新数组等

尝试以下方法:

for(int i = 0 ; i < stringArray.Length ; i++)
{
    stringArray[i] = stringArray[i] + "sad";
}
for(int i=0;i

这将使用新字符串替换数组中的每个项。请注意,在使用
foreach
进行迭代时,不能更新列表/集合/数组等,这可能会破坏迭代器。因此,可以使用
for
循环。

除了Chris所说的,您可以简单地使用LINQ实现您想要的:

string[] newStringArray = stringArray
    .Select(s => s + "sad")
    .ToArray();

您应该更改字符串b=s+“sad”;字符串s+=“sad”;可能的打字错误
控制台写入线(b)而不是控制台写入线
string[] newStringArray = stringArray
    .Select(s => s + "sad")
    .ToArray();