C#9中ref的使用总结,30+电气工程师学编程的第一篇

379 阅读1分钟

前言:1、环境:VS2019,史上第一IDE,吊打Pycharm,我觉得python难搞就是它害的。

2、学习书籍:c#入门经典第八版,吹爆的好书一句废话都没有,清华出版社YYDS。

3、吐槽:同济大学的线性代数误我一生。

正文

REF使用方法我研究了几个小时,搞习惯了PLC的梯形图再看C#有点吃力。

总结:REF是一个“引用”作用的关键字。注意引用是功能词,用途是返回链接的参数/局部变量/类型。

三个用途:链接函数中的参数、链接局部变量、链接类型。

1、返回参数

代码:

static void sd(int a) { a*=2; writeline($"value2={a}"); } int b=5; writeline($"value1={b}); sd(b); writeline($"value3={b});

执行后:

value1=5 value2=10 value3=5

注意:a、主函数中变量b没有与函数sd中a产生联系,a的值最后通过a*=2改变,b没有变,b依然是b。

b、这里按我自己理解sd函数的框架是f(x)=y,其中sd就是f(),a是X,y就是返回的值。主函数调用sd函数

就是把b赋值给a计算出y,要么用void类型直接输出,要么用定义类型返回,当然必须先用变量定义返回,不然y没有地方放。

我想把b的值和sd(a)计算后的a关联怎么搞?面向对象不是过程啊,每次修改sd(a)会累死的,函数就是规律是公式是节省力气,电气工程师最喜欢抄近路。

ref来了

static void sd(ref int a) { a*=2; writeline($"value2={a}"); } int b=5; writeline($"value1={b}); sd(ref b); writeline($"value3={b});

执行后:

value1=5 value2=10 value3=10

当然有两个要求:1、ref引用的变量不能是固定的,别用const(目前我知道的只有const)。2、ref引用的变量必须初始化,搞电气的都知道变量不初始化,寄存器就出乱码,特别是一些小控制器,没接模拟量都有数值。

2、返回局部变量

这个功能类似与变量关联,PLC的变量表也有这个方法。

int a=5; ref int b=ref a; b=6;

改动b改变a,改变a会改变b,就看代码执行顺序。

3、返回类型

static ref int sd(ref int a) { a*=2; return ref a; }

上面的代码是强制要求返回的a值必须是ref int类型,这本书上到这里也没写明白用途,可能是用于固定类型的。

另外掘金的文章怎么没有回车和空格。