如何在一个方法中分配变量并在另一个方法中更改/使用它?

时间:2017-09-21 16:16:14

标签: c# variables

我必须对x和z变量进行哪些更改才能保留在Assign方法中分配的值?我最近才开始在学习C ++ 2年后开始学习C#,所以这对我来说非常困惑。

class Program
{
    static void Assign(int x, int z)
    {
        x = 3;
        z = 2;
    }

    static void Sum(int x, int z)
    {
        Console.WriteLine(x + z);
    }

    static void Main(string[] args)
    {   
        int x = 0, z = 0;
        Assign(x,z);
        Sum(x,z);
    }
}

1 个答案:

答案 0 :(得分:2)

您似乎误解了变量范围的工作原理。 x中的Assign x中的Main相同。这是因为在C#中,int按值传递(这与C ++,BTW相同)。

您可能打算将Assign中的变量标记为ref

class Program
{
    static void Assign(ref int x, ref int z)
    {
        x = 3;
        z = 2;
    }

    static void Sum(int x, int z)
    {
        Console.WriteLine(x + z);
    }

    static void Main(string[] args)
    {   
        int x = 0, z = 0;
        Assign(x, z);
        Sum(x, z);
    }
}

请注意,建议不要这样做,因为现在Assign会产生副作用。这样更好:

class Program
{
    static void PrintSum(int x, int z)
    {
        Console.WriteLine(x + z);
    }

    static void Main(string[] args)
    {   
        PrintSum(3, 2);
    }
}

有关更多背景信息,我建议您查看the difference between pass-by-reference and pass-by-value