C#变量,方法,参考练习

use*_*117 -3 c#

我在C#上做了一个练习,这里是:

class Program
{
    static double funk(int a, ref int b)
    {
        double c = a + b;
        a = 5;
        b = a * 3;
        return c;
    }

static void Main(string[] args)
{
    int a = 1, b = 2;
    Console.WriteLine(funk(a, ref b));
    Console.WriteLine(a);
    Console.WriteLine(b);
    Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)

因此,当我运行代码时结果非常清楚,它给了我:

3
1
15
Run Code Online (Sandbox Code Playgroud)

我现在的问题是,15和3来自哪里?

Ree*_*sey 6

3来自:

double c = a + b;

//...
return c;
Run Code Online (Sandbox Code Playgroud)

这将Console通过第一个打印出来WriteLine.

15来自:

double c = a + b; // c == 3
a = 5;
b = a * 3; // b == 5 * 3 == 15
Run Code Online (Sandbox Code Playgroud)

因为你通过在bref,你改变呼叫者变量(的实际值bMain),其被设置为15,然后通过第三打印出来WriteLine.