C#代码解析,谢谢啊。

来源:百度知道 编辑:UC知道 时间:2024/05/26 22:22:27
namespace ConsoleApplication5
{
public class Foo
{
public void Modify(int n)
{
n = 1000;
}
}
class Program
{
static void Main(string[] args)
{
int x = 10;
Foo f = new Foo();
Console.WriteLine("x before modify :" + x);
f.Modify(x);
Console.WriteLine("x after modify :" + x);
Console.ReadLine();
}
}
}
两次的X值,都是一样的,不明白,希望高手指导!谢谢啊。

namespace ConsoleApplication5
{
public class Foo
{
public void Modify(ref int n)
{
n = 1000;
}
}
class Program
{
static void Main(string[] args)
{
int x = 10;
Foo f = new Foo();
Console.WriteLine("x before modify :" + x);
f.Modify(ref x);
Console.WriteLine("x after modify :" + x);
Console.ReadLine();
}
}
}

C# 中,既可以通过值也可以通过引用传递参数。通过引用传递参数允许函数成员更改参数的值,并保持该更改。若要通过引用传递参数, 可使用ref或out关键字。ref和out这两个关键字都能够提供相似的功效,其作用也很像C中的指针变量。它们的区别是:
1、使用ref型参数时,传入的参数必须先被初始化。对out而言,必须在方法中对其完成初始化。

2、使用ref和out时,在方法的参数和执行方法时,都要加Ref或Out关键字。以满足匹配。

3、out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。

注:在C#中,方法的参数传递有四种类型:传值(by value),传址(by reference),输出参数(by output),数组参数(by array)。传值参数无需