Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在不影响函数的情况下将变量传递给函数_C#_Variables_Scope_Console Application - Fatal编程技术网

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没用,我以前试过,谢谢。