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

例如:publicvoidGetData(intid,refstringstr){str=string.Empty;}publicstringGetData(intid)... 例如:
public void GetData(int id, ref string str)
{
str = string.Empty;
}
public string GetData(int id)
{
return string.Empty;
}

那使用return和ref那个性能高点?
展开
 我来答
就烦条0o
2015-12-16 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46492
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部

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
    }
}
百度网友867d2cdbe
2010-11-24 · TA获得超过184个赞
知道小有建树答主
回答量:185
采纳率:0%
帮助的人:175万
展开全部
ref是传递引用,当一个方法需要返回多个值时就用ref或out,return只返回一个值.ref建议尽量少用吧,因为当你多次调用含ref传递参数的方法时,ref传递的参数值就会变得很难控制,每次调用方法都会改变ref传递的参数值,需要返回多个值时用out更好控制.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
秀惠场9
2010-11-24 · 超过23用户采纳过TA的回答
知道答主
回答量:112
采纳率:0%
帮助的人:40.4万
展开全部
ref可以直接影响到参数的变化,是引用传递,用ref比较简便一点,其实哪个都无所谓,就看自己那个掌握的比较好,自己容易理解就用哪一个就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
泉水叮咚1205
2010-11-24 · TA获得超过302个赞
知道小有建树答主
回答量:182
采纳率:0%
帮助的人:224万
展开全部
区别就是 return 回来的结果一般是一个新的对象。 而 ref 是直接修改原有的已经在内存中的对象,不用重新实例化一个对象。
但用return吧 ,少用 ref 因为这样程序不是很直观。 个人意见
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tjw_tjw
2010-11-24 · TA获得超过3178个赞
知道大有可为答主
回答量:3078
采纳率:100%
帮助的人:1663万
展开全部
ref返回参数,就是函中可以改你传进的变量值 (相当于C中指针)

return 返回数值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式