C# 如何在不影响函数的情况下将变量传递给函数
我有这样的想法:C# 如何在不影响函数的情况下将变量传递给函数,c#,variables,scope,console-application,C#,Variables,Scope,Console Application,我有这样的想法: 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()函数中的值也会发生变化 如何防止在不更改变量的情况下执行此操作和处理变量?C#中的数组是引用类型,因此它总是通过引用传
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()函数中的值也会发生变化
如何防止在不更改变量的情况下执行此操作和处理变量?C#中的数组是引用类型,因此它总是通过引用传递。您需要在
func
方法中创建输入数组的副本:
static void func(int[] input)
{
int[] sqa = (int[])input.Clone();
sqa[0] = 0;
sqa[1] = 1;
}
C#中的数组是引用类型,因此它总是通过引用传递。您需要在
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;
}
这是因为数组是引用类型。您可以通过创建新数组并将值从旧数组复制到新数组来绕过此问题
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;
}
从你的方法func()@DanielHakimi中删除static关键字,它与这里发生的事情无关,我的好人:)@PoweredByOrange啊!反应很快,其中一个SMH时刻哈哈@DanielHakimi不起作用,我以前试过,谢谢。从你的方法func()@DanielHakimi中删除static关键字,它与这里发生的事情无关,我的好兄弟:)@PoweredByOrange啊!反应很快,其中一个SMH时刻哈哈@DanielHakimi没用,我以前试过,谢谢。