本文實例分析了一道關于C#參數傳遞的面試題。分享給大家供大家參考。具體如下:
1.定義一個類MPigeon,調用一個Swap交互函數,問最后實參的結果是什么
類定義:
public class MPigeon{public string Name { get; set; }}
交換函數:
public void Swap(object a,object b){ object temp=a; a=b; b=temp;}
測試代碼:
private void button2_Click(object sender, EventArgs e){ MPigeon a = new MPigeon() { Name = "Black" }; MPigeon b = new MPigeon() { Name = "White" }; Swap(a, b); string ResultMsg = string.Format("a:{0},b:{1}", a.Name, b.Name); MessageBox.Show(ResultMsg);}
結果顯示如下:
結果分析:
由于實參變量和形參變量都是引用類型,它們都指向內存堆中的某一對象的地址,
函數是將實參變量指向的地址值復制了一份給形參變量,由于形參變量和實參變量指向堆中同一地址
由于是復制了一份,所以實參的地址在swap函數中是沒有被改變的,所以最后輸出的結果,實參的值和原來是完全一樣的
(注意:swap函數只是交互了一下形參的地址而已,而沒有改變它們的值,如果改變了值,那實參的值也會跟著改變)
例如:
public void Swap2(object a, object b){ ((MPigeon)a).Name = "Ronaldo"; ((MPigeon)b).Name = "Rivaldo";}
希望本文所述對大家的C#程序設計有所幫助。
新聞熱點
疑難解答