C# 简单循环和错误元素

C# 简单循环和错误元素,c#,arrays,list,C#,Arrays,List,以下是一些代码: foreach (int[] temp in intList) { string str = GenerateGamma(0,1,10,temp); if (str == "924890128") answer.Add(temp); } 其中,在intList中有int数组,每个数组都具有以下属性:array[1]=1(数组长度为10)。嗯,当我查看答案时,我看到了数组14660932758,所以array[1]=4。 这是generatega

以下是一些代码:

foreach (int[] temp in intList)
{
    string str = GenerateGamma(0,1,10,temp);
    if (str == "924890128")
        answer.Add(temp);
}
其中,在
intList
中有int数组,每个数组都具有以下属性:
array[1]=1
(数组长度为10)。嗯,当我查看
答案时,我看到了数组
14660932758
,所以
array[1]=4
。 这是
generategama()
的代码

publicstaticstringgenerategama(inti0,intj0,intm,int[]b)
{
常数ct=新常数();
int[]伽马=新的int[9];
int[]内部数组=b;
字符串结果=”;
温度i=i0,温度j=j0,温度i=0;

对于(int t=1;t数组是引用类型,如果在
generategama()
方法中更改传递的数组,则原始数组也将更改

您的数组已更改,因为在方法内部您有:

int[] inside_array = b;
在这里,您不需要创建传递数组的副本,只需要创建数组引用的副本。因此,您有一个数组和两个引用(
b
inside\u array
),它们指向相同的数组:
b[0]=1;
inside\u array[0]=1;
执行相同的操作-它们修改相同的数组

如果要复制:

int[] inside_array = new int[b.Length];
for (int a = 0; a < inside_array.Length; a++)
{
    inside_array[a] = b[a];
}
int[]内部数组=新的int[b.Length];
for(int a=0;a

在此之后,您将有两个数组,当您更改一个数组时,另一个数组将不会更改。

数组是引用类型,如果您在
generategama()
方法中更改传递的数组,则原始数组也将更改

您的数组已更改,因为在方法内部您有:

int[] inside_array = b;
在这里,您不需要创建传递数组的副本,只需要创建数组引用的副本。因此,您有一个数组和两个引用(
b
inside\u array
),它们指向相同的数组:
b[0]=1;
inside\u array[0]=1;
执行相同的操作-它们修改相同的数组

如果要复制:

int[] inside_array = new int[b.Length];
for (int a = 0; a < inside_array.Length; a++)
{
    inside_array[a] = b[a];
}
int[]内部数组=新的int[b.Length];
for(int a=0;a

在此之后,您将有两个数组,当您更改一个数组时,另一个数组将不会更改。

Show generategama method.I添加该方法的代码。Show generategama method.I添加该方法的代码。