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则是让它可以按照地址传递改变了地址的值

原创文章 37 获赞 11 访问量 2797

猜你喜欢

转载自blog.csdn.net/qq_39691716/article/details/96242219