在值类型和引用类型参数上用ref和out
*********************************************************************************
out
Class App
{
static void Main()
{
Int32 x;
SetVal(out x); //x不必被初始化
Console.WriteLine(x);
}
static void SetVal(out Int32 x)
{
V=10;
}
}
**************************************************************************************
ref
class App
{
static void Main()
{
Int32 x = 5;
AddVal(ref x); //x必须被初始化
Console.WriteLine(x);
{
static void Main()
{
Int32 x = 5;
AddVal(ref x); //x必须被初始化
Console.WriteLine(x);
}
static void AddVal(ref Int32 v)
{
v += 10;//AddVal方法可以直接使用经过初始化的v
}
}
*************************************************************************************
static void AddVal(ref Int32 v)
{
v += 10;//AddVal方法可以直接使用经过初始化的v
}
}
*************************************************************************************
//可以根据out和ref参数来重载方法
class Point
{
static void Add(Point p){.....................};
static void Add(ref Point p){..............};
}
class Point
{
static void Add(Point p){.....................};
static void Add(ref Point p){..............};
}
但是仅通过区分out和ref关键字来重载方法又是不合法的,因为它们经JIT编译后的代码是相同的。
所以我们不能再在上面的Point类型中再定义下面的方法:
static void Add(out Point p){.............};