以下示範使用 ref 的程式碼:
using System;
class M
{
public void F(ref int i)
{
i = 3;
}
}
class Test
{
int i = 0; // 作為 ref 參數的變數必須先明確賦值
static void Main()
{
Test t = new Test();
Console.WriteLine("the value of i is:{0}", t.i);
M mm = new M();
mm.F(ref t.i); // 以引用參數傳遞
Console.WriteLine("now the value of i is :{0}", t.i); // i 的值已改變
}
}
接著示範使用 out 的類似程式碼:
class M
{
public void F(out int i) // 方法簽名與 ref 版本相同
{
i = 8; // 返回前必須明確賦值
}
}
class Test
{
int i; // 不需初始化,這就是 out 與 ref 的差異,但仍需宣告
public static void Main()
{
Test t1 = new Test();
Console.WriteLine("the value of i is :{0}", t1.i); // 輸出 0
M m1 = new M();
m1.F(out t1.i); // 作為輸出參數傳遞,輸出變為 8
Console.WriteLine("now value of i is :{0}", t1.i);
}
}