char[] temparr = str;
for (int q = 0; q < temparr.Length; q++)
{
if (q == 0) { temparr[q] = firstNewElement; }
else { temparr[q] = str[q - 1]; }
}
str = temparr;
为什么此代码会将所有temparr
元素设置为firstNewElement
变量?
注意:str
也是一个数组。这不是完整的代码
答案 0 :(得分:1)
分配时
char[] temparr = str;
您没有创建新的临时数组,只需将temparr
指向str
,然后修改str
和temparr
。
您需要复制str
:
char[] temparr = (char[])str.Clone();
您意识到您将使用此代码删除str
的最后一个元素,对吗?
执行相同操作的更有效方法是:
Array.Copy(str, 0, str, 1, str.Length-1);
str[0] = firstNewElement;
答案 1 :(得分:-1)
因为通过char[] temparr = str;
,您正在复制对数组的引用。所以
Q = 0
temparr[0] = firstNewElement;
Q = 1
temparr[1] = str[0]; // str[0] is temparr[0], temparr[0] is firstNewElement
而不是char[] temparr = str;
,请考虑char[] temparr = str.Clone();
复制数组str
的值。