前言: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类型,这本书上到这里也没写明白用途,可能是用于固定类型的。
另外掘金的文章怎么没有回车和空格。