Lua代码
print("*****************Lua调用C# ref相关知识点******************");
Lesson5=CS.Lesson5;
local obj = Lesson5();
--ref参数 会以多返回值的形式返回给lua
--如果函数存在返回值 那么第一个值就是该返回值
--之后的返回值 就是ref的结果 从左到右一一对应
--ref参数 相当于传入一个默认值 占位置(ref 不能省略,可以用0占位置)
--a相当于返回值
--b 第一个ref
--c 第二个ref
local a,b,c=obj:RefFun(1,0,0,1);
print(a);--100
print(b);--2
print(c);--0
print("*****************Lua调用C# out相关知识点******************");
--out参数 会以多返回值的形式返回lua
--如果函数存在返回值,第一个为函数返回值
--之后的返回值 就是out的结果 从左到右一一对应
--out参数 不需要传入占位置的值(out可以省略)
local a,b,c = obj:OutFun(20,30);
print(a);--200
print(b);--20
print(c);--30
print("*****************Lua调用C# 混合相关知识点******************");
--混合使用时 综合上面的规则
--ref需要占位置 out可以省略
--第一个为函数返回值 之后从左到右依次对应ref或者out
local a,b,c = obj:RefOutFun(20,1);
print(a);--300
print(b);--200
print(c);--400
C#代码
#region Lesson5 ref out的使用
public class Lesson5
{
public int RefFun(int a, ref int b, ref int c, int d)
{
b = a + d;
c = a - d;
return 100;
}
public int OutFun(int a, out int b, out int c, int d)
{
b = a;
c=d;
return 200;
}
public int RefOutFun(int a,out int b,ref int c)
{
b = a * 10;
c = a * 20;
return 300;
}
}
#endregion