C# ref关键字和out关键字的区别

C#out关键字

  • 这个是正常的out关键字使用的方式

  • 这个是错误的out关键字使用方式

这里报错了

第一:从以上第一幅图可以发现 out如果作为参数传递

它是按照地址传递的 a和b的参数值是不会被传入到方法中的。

第二:从第二幅图可以发现out既然作为地址(引用)传递那么它就是一个必须被初始化并且只能在方法内部初始化

在这里插入图片描述
在这里插入图片描述

从第三第四幅图可以得出ref是按照地址传入的ref和out在我看来都是按照地址传入的;具体解释如下

第三幅图可以得出Fun()方法中a的地址其实在一开始还没有在方法内部初始化 在Main()函数中初始化了之后a的地址里面就是int = 20的值 那么a地址所对应的值就是20 b所对应的地址是int = 30的值 那么b地址所对应的值就是30 调用方法Fun之后a的地址的值就变为a的地址+b的地址 =50,b的地址=6

这样就可以很清楚的看到按值传递和按引用(地址)传递的区别

理解:ref其实就是在方法中进行值的改变 并且最后还能把值保留下来(就是改变地址的对象的值)

例子 int a = 10 int b = 20 int c = a + b

a地址所对应的值就是10 b地址所对应的值就是20 c地址所对应的值就是a地址的值+b地址的值 普通参数的就是按照值传递 并不会改变地址所对应的值 而ref则是让它可以按照地址传递改变了地址的值

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值