C#:函数传参 传值 vs 传引用 ref vs out

概念

 值传递 当方法传递的参数是值类型时,变量的栈数据会完整地复制到目标参数中,即实参和形参中的数据相同但存放在内存中的位置不同。所以,在目标方法中对形参所做的更改不会对调用者的初始变量产生任何影响。

  引用传递 当方法传递的参数是引用类型时,只是将变量的引用复制到目标参数中,实参和形参的引用指向内存中的同一位置。所以,在目标方法中对形参所做的更改会影响调用者的初始变量。

C#中的特殊参数

(1)引用参数---ref

结构、整数等类型做参数时默认是传值的;

类、数组等类型做参数时默认是传引用的;

在传值的类型前加上关键字ref,并在调用时在实参上也加上关键字ref,即可改为传引用。    

(2)输出参数---out

     C# 除了传值、传引用之外,还可以将数据从一个函数内部单向传出。

    需要使用关键字out来修饰参数类型;

【注】:refout都是传引用。区别在于,out不接受调用者传来参数的数据值,而是把该参数当做未赋值的参数。

ref & out 区别

①ref 可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空,所以你必须初始化一次。ref是有进有出,out是只出不进。

②传递到 ref 参数的参数必须最先初始化,out 的参数在传递之前不需要显式初始化。

out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候

参考文章

1. https://blog.csdn.net/susan19890313/article/details/6841541

2. https://www.cnblogs.com/sunliyuan/p/5999045.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值