out 和 ref
在c#的底层经常可以看到用到 out 和 ref 这两个关键字 但是之前没做深入了解,只是看了一下他怎么用
之前理解到:(这只是out和ref的区别)
ref和out是成对使用的,形参和实参前面都需要添加的
使用ref传递参数的时候,ref修饰的参数必须要有值,
但是out可以使用一个未赋值的变量作为参数传递
现在理解的:
他们两个关键字都是用于允许引用传递
当你在一个方法里的参数前加上这两个参数之一的时候,那么你的参数将作为引用类型来操作
也就是说他的操作方式将是在堆上进行操作,传递的是该变量的一个地址,而不是他的值
params(不同于out和ref 他不是成对出现的,只需要在形参前添加)
params比较简单,就是任意个数的参数,只要类型相同就可以
经过测试发现 params 参数的个数是 >= 0,就是说你传参数也是可以的
这个还是很快乐的
===========================================================
我们在unity中随便来一个脚本
可以一起来验证一下以上的理论
脚本我们挂在任意对象上
这是我得到的结果
上面结论验证成功
脚本就放下面了
void Start()
{
int outValue;
//普通函数无法使用未赋值变量进行操作
//SimpleFunction(outValue); 这个是错误示例
OutFunction(out outValue);//out可以使用
print("out参数的操作:" + outValue);
int refValue = 1000;
RefFunction(ref refValue);//ref使用
print("ref参数的操作:" + refValue);
SimpleFunction(refValue);//普通函数
print("普通的操作:" + refValue);
ParamsFunction(11,33 ,25);//params自定义个数参数
}
private void SimpleFunction(int value)
{
value = Random.Range(0, 50);
}
private void OutFunction(out int value)
{
//out操作的value赋值使用复合运算符会提示使用了为赋值的变量
value = Random.Range(50, 100);
}
private void RefFunction(ref int value)
{
//ref操作的value可以使用复合运算符
value += 100;
}
private void ParamsFunction(params int[] arr)
{
print("ParamsFunction");
foreach (var item in arr)
{
print(item);
}
}
标签:int,value,参数,params,ref,out From: https://www.cnblogs.com/zanzz/p/17254080.html