有人可以解释这个涉及"通过输出"概念的C#代码的逻辑吗?

Jes*_*ess 3 c# oop

static int Test(out int x, int y=4) 
{
    x = 6;
    return x * y;
}

static void Main(string[] args) 
{
    int a;
    int z = Test(out a);
    Console.WriteLine(a + z);
}
Run Code Online (Sandbox Code Playgroud)

输出是30,但我不明白如何.

我在Test()方法中得到了它,参数x将值6输出到Main()方法中,但是如果你只是输出6那么它是如何发送返回值为24的?

我不知道这一切是否有意义.我猜,我正在努力解决整个"输出输出"的概念.

请尝试以最简单的巴尼式方式解释这个概念.如果它过于技术性和复杂性,它可能会让我更加困惑.

Zei*_*kki 7

评论如下:

static void Main(string[] args) 
{
    int a;
    int z = Test(out a); // returns z as 6 * 4 = 24 and sets a = 6;
    Console.WriteLine(a + z); // 24 + 6 = 30
}
Run Code Online (Sandbox Code Playgroud)

out允许开发人员通过引用传递和更新参数值,以便它反映在调用方法中(与a您的情况相同)

来自C#规格:

使用out修饰符声明的参数是输出参数.输出参数不会创建新的存储位置.相反,输出参数表示与作为函数成员或委托调用中的参数给出的变量相同的存储位置.因此,输出参数的值始终与基础变量相同.

ref和之间的区别在于out:

•在函数成员或匿名函数正常返回之前,必须明确赋值函数成员或匿名函数的每个输出参数.