博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#7.0之ref locals and returns (局部变量和引用返回,之前欠大家的,现在补上)
阅读量:7098 次
发布时间:2019-06-28

本文共 1001 字,大约阅读时间需要 3 分钟。

没看过原文的请移步:

废话不多说,直接进入正题.

首先我们知道 ref关键字是将值传递变为引用传递

那么我们先来看看ref locals(ref局部变量)

列子代码如下:

static  void Main(string[] args)        {            int x = 3;            ref int x1 = ref x;  //注意这里,我们通过ref关键字 把x赋给了x1            x1 = 2;            Console.WriteLine($"改变后的变量 {nameof(x)} 值为: {x}");            Console.ReadLine();        }

这段代码最终输出 "2"

大家注意注释的部分,我们通过ref关键字把x赋给了x1,如果是值类型的传递,那么对x将毫无影响 还是输出3.

好处不言而喻,在某些特定的场合,我们可以直接用ref来引用传递,减少了值传递所需要开辟的空间.

 

接下来我们看看ref  returns (ref引用返回)

这个功能其实是非常有用的,我们可以把值类型当作引用类型来进行return

老规矩,我们举个栗子,代码如下:

很简单的逻辑..获取指定数组的指定下标的值

static ref int GetByIndex(int[] arr, int ix) => ref arr[ix];  //获取指定数组的指定下标

我们编写测试代码如下:

int[] arr = { 1, 2, 3, 4, 5 };            ref int x = ref GetByIndex(arr, 2); //调用刚才的方法            x = 99;            Console.WriteLine($"数组arr[2]的值为: {arr[2]}");            Console.ReadLine();

我们通过ref返回引用类型,在重新赋值, arr数组中的值,相应也改变了.

总结一下:ref关键字很早就存在了,但是他只能用于参数,这次C#7.0让他不仅仅只能作为参数传递,还能作为本地变量和返回值了

好了,就这么多.

谢谢大家的捧场

 

 

转载于:https://www.cnblogs.com/GuZhenYin/p/6531814.html

你可能感兴趣的文章
SOM自组织映射网络 教程
查看>>
lintcode:寻找旋转排序数组中的最小值 II
查看>>
树莓派学习笔记——交叉编译练习之SQLite3安装
查看>>
android stuido build 慢的解决办法
查看>>
Appium移动自动化测试(四)--one demo
查看>>
nginx配置location总结及rewrite规则写法
查看>>
python 登陆接口
查看>>
RedHat7 部署ELK日志分析系统
查看>>
DS实验题 Missile
查看>>
微信上 网页图片点击全屏放大
查看>>
jquery获取css颜色值返回RGB应用
查看>>
(void __user *)arg 中__user的作用
查看>>
Redefine:Change in the Changing World
查看>>
POJ 3436 ACM Computer Factory 最大流
查看>>
atitit。全局变量的设计与实现 java php的异同
查看>>
自己定义控件-画板,橡皮擦,刮刮乐
查看>>
spark 按照key 分组 然后统计每个key对应的最大、最小、平均值思路——使用groupby,或者reduceby...
查看>>
顺序表示的线性表——顺序表
查看>>
categorys源码
查看>>
XML学习总结(二)——XML入门
查看>>