如何在不影响函数的情况下将变量传递给函数
本文关键字:函数 变量 情况下 影响 | 更新日期: 2023-09-27 18:27:09
我有这样的东西:
static void Main()
{
int[] sqa = new int[2];
sqa[0] = 1;
sqa[1] = 2;
func(sqa);
}
static void func(int[] sqa)
{
sqa[0] = 0;
sqa[1] = 1;
}
在我调用func()
之后,`Main()函数中的值也发生了变化。
我如何防止这样做,并在不改变变量的情况下处理变量?
数组是一个引用类型,所以它总是通过引用传递的
您需要在func
方法中创建输入数组的副本:
static void func(int[] input)
{
int[] sqa = (int[])input.Clone();
sqa[0] = 0;
sqa[1] = 1;
}
之所以会发生这种情况,是因为数组是一个引用类型。您可以通过创建一个新数组并将旧数组中的值复制到新数组来绕过此问题。
static void Main()
{
int[] sqa = new int[2];
sqa[0] = 1;
sqa[1] = 2;
int[] sqa2 = new int[2];
Array.Copy(sqa, sqa2, sqa.Length);
func(sqa2);
}
static void func(int[] sqa)
{
sqa[0] = 0;
sqa[1] = 1;
}