Lua中呼叫ref和out修飾引數的函式/過載函式

畅知發表於2024-05-23

[12] lua中呼叫ref 和 out 修飾引數的函式數值

public int RefCompute(int a, ref int b, ref int c, int d)
{
    b += a;
    c += d;
    return b + c;
}

public int OutCompute(int a, out int b, out int c,int d)
{
    b = a + 1;
    c = d + 2;
    return b + c;
}

public int RefOutCompute(int a, ref int b, out int c,int d)
{
    a += b;
    c = d + 3;
    return a + c;
}

lua指令碼中進行呼叫

------------------lua中呼叫C#的ref 和 out方法
---- lua呼叫ref引數的函式 ref修飾的引數會返回值形式返回
---第一個返回值為函式返回會值
---之後返回值為ref修飾的引數結果
local a,b,c = student:RefCompute(1,2,3,4)
print("a=" .. a) -- 10
print("b=" .. b) -- 1+2
print("c=" .. c) -- 3+4

--與ref修飾引數一樣
---out修飾的引數也會隨結果返回
local d,e,f = student:OutCompute(10,9,8,7)
print("d=" .. d) -- 20
print("e=" .. e) -- 10 + 1
print("f=" .. f) --7 + 2

--呼叫引數型別含有ref和out修飾的函式
--會依次隨著函式結果返回
local d,e,f = student:RefOutCompute(10,9,8,7)
print("d=" .. d) -- 19
print("e=" .. e) -- 9 ref修飾引數返回值 引數數值未變
print("f=" .. f) --10+ 9+ 3 + 7 out修飾引數返回值

image-20240523221229817

[13]Lua中呼叫C#的過載函式

幾個簡單的方法,注意有out修飾引數型別的過載函式.

img

lua指令碼中呼叫:

img

執行結果:

image-20240523232123784

相關文章