【发布时间】:2019-08-03 09:58:53
【问题描述】:
我知道字符串是不可变的,不能重新定义,但是在这个 foreach 循环中,通过添加数组元素多次更改字符串。
var stringOfNames = "";
var arrayOfNames = new string[5] { "jack", "marry", "joe", "jimmy", "bud" };
foreach (var item in arrayOfNames)
{
stringOfNames += item;
Console.WriteLine(stringOfNames);
}
预期:
错误声明“变量已在此范围内定义。”
实际:
通过添加其他名称来更改字符串。
还有,这两者有什么区别:
1)
var a = "something";
var a = "something else";
2)
var a = "something";
a+= "asdf";
为什么第二个选项有效?
【问题讨论】:
-
这是正确的行为。为什么你会期待那个错误信息?这里没有重新定义。只需在每个循环中,字符串引用 stringOfName 将设置为不同的字符串引用,但变量仍然相同。
标签: c#