c# 的值参数

来源:百度知道 编辑:UC知道 时间:2024/07/08 21:12:55
高手们 给我解答这个问题吧.我困惑了~!
<1>
class Method
{
public static void ValueMethod(int i)
{
i++;
}
static void Main()
{
int i=0;
ValueMethod(i)
Console.WriteLine("i="+i);
}
}
输出的结果是i=0
---------------------------------------------------------------
<2>
...
public static int add(int i,int k)
{
return i+k;
}

static void Main()
{
int i=3;
int k=5;
Console.WriteLine("i+k="+add(i,k));
}
输出i+k=8 这个我没什么好疑问的了
----------------------------------------------------------------

我觉得这两个例子没什么区别啊,都是值参数
为什么上面一个调用函数后值并没改变呢?也就是没对i=0进行i++

为什么下面一个调用函数,又会对i=3和k=5进行i+k呢?
很困惑啊.求求求助!
(高手们一定要理解我的困惑啊,这两个例子一模一样的啊?如果说他们不同,那还好,关键是他们一模一样的,怎么会产生不同结果呢?这让我以后用带参数的函数时怎么办啊?)

第二个方法有return的,就是把执行函数的结果穿了回来,而且反应到了Concole.WritLine上。

如果你在第一个方法里加一条return ,变成:
public static int ValueMethod(int i)
{
i++;
return i;
}
把Main变成:
static void Main()
{
int i=0;
Console.WriteLine("i="+ValueMethod(i));
}
你就能看出来了。

<1>
class Method
{
public static void ValueMethod(int i)
{
i++; //这里执行i被加一了,但是加一后的i并未返回
}
static void Main()
{
int i=0; //这是i刚申明是0
ValueMethod(i) //这个方法执行和没执行一样
Console.WriteLine("i="+i); //这里输出的i还是刚创建时的i,所以i还是0
}
}
第二个就不用说了吧!
---------------------------------------------------------------

两个函数中的i都是每个函数的局部变量

第一个代码块输出的是Main函数中的局部变量i
ValueMethod中的i和Main中的i毫不相关

第二个代码块输出的是add()函数的返回值

------------------------正解1-------------------
class Method
{
public static int ValueMethod(int i)
{
rerurn i++;