我在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来自哪里?
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)
因为你通过在b与ref,你改变呼叫者变量(的实际值b中Main),其被设置为15,然后通过第三打印出来WriteLine.