C# 使用';foreach&x27;C语言中带stringArray的循环#
我正在编写一个程序,它应该在foreach循环中显示数组中的项 我想通过向每个元素添加字符串“sad”来更改数组的元素,但是当运行程序时,数组保持不变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
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();