C#中使用return返回参数和使用ref返回参数有什么区别?

2024-12-04 20:32:34
推荐回答(5个)
回答1:

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
    }
}

回答2:

ref是传递引用,当一个方法需要返回多个值时就用ref或out,return只返回一个值.ref建议尽量少用吧,因为当你多次调用含ref传递参数的方法时,ref传递的参数值就会变得很难控制,每次调用方法都会改变ref传递的参数值,需要返回多个值时用out更好控制.

回答3:

ref可以直接影响到参数的变化,是引用传递,用ref比较简便一点,其实哪个都无所谓,就看自己那个掌握的比较好,自己容易理解就用哪一个就行了

回答4:

区别就是 return 回来的结果一般是一个新的对象。 而 ref 是直接修改原有的已经在内存中的对象,不用重新实例化一个对象。
但用return吧 ,少用 ref 因为这样程序不是很直观。 个人意见

回答5:

ref返回参数,就是函中可以改你传进的变量值 (相当于C中指针)

return 返回数值