C#Trick&Tip: 使用 ref 与 out 传递参数的区别

很早就知道C# 提供了 ref 和 out 关键字以便参数按引用(地址)传递,用着用着经常搞混淆了,从MSDN中整理了一下,方便以后查阅:

相同点:
1.使参数按引用传递,注意这里的“引用”与我们通常说的“对象引用”不一样,可以形象的理解为,类似于C/C++中传指针(地址)。
2.效果是,被调用方对该参数的修改会反映到该变量中,即当调用结束返回时,调用方看到的是修改过的值。
3.方法定义和调用方法都必须显式使用 ref 或者 out 关键字

不同点:
1。传递到 ref 的参数必须最先初始化,即由调用方显式初始化。
2。传递到 out 的参数在传递之前不需要显式初始化,但需要调用方在方法返回之前必须对其赋值。

使用场景:

关于重载说明:
1。refout 关键字在运行时的处理方式不同,但在编译时的处理方式相同。因此,如果一个方法采用 ref 参数,而另一个方法采用 out 参数,则无法重载这两个方法。
2。但是,如果一个方法采用 refout 参数,而另一个方法不采用这两类参数,则可以进行重载。

关于使用 ref 和 out 传递数组
// continued in future

MSDN:
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/b8a5e59c-907d-4065-b41d-95bf4273c0bd.htm
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/7e911a0c-3f98-4536-87be-d539b7536ca8.htm
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_csref/html/6a2b261e-a1cc-49a6-b4f0-6cacae385a1e.htm

转载于:https://www.cnblogs.com/Jinglecat/archive/2006/11/19/565306.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值