out 和 ref 的区别
class test
{
static void gump(ref int i)
{
i=12; //这个可以不赋值,也不会报错
i += 1;
}
static void Main()
{
int i = 10;
gump(ref i);
Console.WriteLine(i);
}
}
输出结果:11
使用out的例子
class test
{
static void gump(out int i)
{
i=12; //必须对i初始化,否则会报错。 (这块就是ref和out的区别之一)
i += 1;
}
static void Main()
{
int i = 10;
gump(out i);
Console.WriteLine(i);
}
}
当希望方法返回多个值时,声明 out 方法非常有用。使用 out 参数的方法仍然可以返回一个值。一个方法可以有一个以上的 out 参数。
下面来举例说明一下out 的用法
示例:
class gump
{
public void math_routines(double x, out double half, out double squared, out double cubed)
{
half = x / 2; //必须初始化,否则会报错
squared = x * x; //必须初始化,否则会报错
cubed = x * x * x; //必须初始化,否则会报错
}
}
class TestApp
{
public static void Main()
{
gump g = new gump();
double x1 = 60;
double half1 = 0;
double squared1 = 0;
double cubed1 = 0;
Console.WriteLine("Before method->x1={0},half1={1},squared1={2},cubed1={3}", x1,half1 ,squared1,cubed1);
g.math_routines(x1, out half1, out squared1, out cubed1);
Console.WriteLine("After method->x1={0},half1={1},squared1={2},cubed1={3}", x1, half1, squared1, cubed1);
}
}
ref用法示例:
class gump
{
public double square(ref double x)
{
x *= x; //可以不初始化,不会报错
return x;
}
}