using system;
using system.collections.generic;
using system.linq;
using system.text;
namespace refout
,y=",x,y);
tp.changewithoutref(x,y);
console.writeline("沒加ref的change之後:");
console.writeline("x=,y=", x, y);
tp.changewithref(ref x,ref y);
console.writeline("加ref的change之後:");
console.writeline("x=,y=", x, y);
console.readkey();}}
public class testparams
public void changewithref(ref int32 a,ref int32 b) }}
執行後,程式斷下,按除錯-->視窗-->反彙編進入相應方法的反彙編視窗,我們會看到:
對於方法 changewithoutref
--- d:\使用者目錄\documents\visual studio 2010\projects\refout\refout\program.cs -----
public void changewithoutref(int32 a,int32 b)
0000004a nop
0000004b lea esp,[ebp-0ch]
0000004e pop ebx
0000004f pop esi
00000050 pop edi
00000051 pop ebp
00000052 ret 4
而對於方法changewithref
--- d:\使用者目錄\documents\visual studio 2010\projects\refout\refout\program.cs -----
public void changewithref(ref int32 a,ref int32 b)
00000057 nop
00000058 lea esp,[ebp-0ch]
0000005b pop ebx
0000005c pop esi
0000005d pop edi
0000005e pop ebp
0000005f ret 4
ref與out的區別
總結以上四條得到ref和out使用時的區別是 ref指定的引數在函式呼叫時候必須初始化,不能為空的引用。而out指定的引數在函式呼叫時候可以不初始化 out指定的引數在進入函式時會清空自己,必須在函式內部賦初值。而ref指定的引數不需要。class program y x,y console.rea...
ref與out的區別
ref static void main string args static void add int num1,int num2 輸出5static void main string args static void add ref int num1,ref int num2 加上ref輸出15...
ref與out的區別
若要使用ref引數,方法定義和呼叫方法均必須顯式使用ref關鍵字,如下面的示例所示。class refexample static void main out.out的使用 class program firstname strarray 0 lastname strarray 1 static v...