return只是返回函数执行的结果,不改变参数值,ref是用来改改传递给函数的参数的值,通常用于需要有多个返回值时。
MSDN中对return和ref进行如下说明:
return 语句终止它出现在其中的方法的执行并将控制返回给调用方法。它还可以返回一个可选值。如果方法为 void 类型,则可以省略 return 语句。
如果 return 语句位于 try 块中,则将在控制流返回到调用方法之前执行 finally 块(如果存在)。
示例:
static double CalculateArea(int r)
{
double area = r * r * Math.PI;
return area;
}
ref 关键字通过引用(而非值)传递参数。通过引用传递的效果是,对所调用方法中的参数进行的任何更改都反映在调用方法中。例如,如果调用方传递本地变量表达式或数组元素访问表达式,所调用方法会将对象替换为 ref 参数引用的对象,然后调用方的本地变量或数组元素将开始引用新对象。
若要使用 ref 参数,方法定义和调用方法均必须显式使用 ref 关键字,如下面的示例所示。
示例:
class RefExample
{
static void Method(ref int i)
{
// Rest the mouse pointer over i to verify that it is an int.
// The following statement would cause a compiler error if i
// were boxed as an object.
i = i + 44;
}
static void Main()
{
int val = 1;
Method(ref val);
Console.WriteLine(val);
// Output: 45
}
}
ref是传递引用,当一个方法需要返回多个值时就用ref或out,return只返回一个值.ref建议尽量少用吧,因为当你多次调用含ref传递参数的方法时,ref传递的参数值就会变得很难控制,每次调用方法都会改变ref传递的参数值,需要返回多个值时用out更好控制.
ref可以直接影响到参数的变化,是引用传递,用ref比较简便一点,其实哪个都无所谓,就看自己那个掌握的比较好,自己容易理解就用哪一个就行了
区别就是 return 回来的结果一般是一个新的对象。 而 ref 是直接修改原有的已经在内存中的对象,不用重新实例化一个对象。
但用return吧 ,少用 ref 因为这样程序不是很直观。 个人意见
ref返回参数,就是函中可以改你传进的变量值 (相当于C中指针)
return 返回数值