一道關(guān)于C#參數(shù)傳遞的面試題分析
本文實(shí)例分析了一道關(guān)于C#參數(shù)傳遞的面試題。分享給大家供大家參考。具體如下:
1.定義一個類MPigeon,調(diào)用一個Swap交互函數(shù),問最后實(shí)參的結(jié)果是什么
類定義:
public class MPigeon
{
public string Name { get; set; }
}
交換函數(shù):
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);
}
結(jié)果顯示如下:

結(jié)果分析:
由于實(shí)參變量和形參變量都是引用類型,它們都指向內(nèi)存堆中的某一對象的地址,
函數(shù)是將實(shí)參變量指向的地址值復(fù)制了一份給形參變量,由于形參變量和實(shí)參變量指向堆中同一地址
由于是復(fù)制了一份,所以實(shí)參的地址在swap函數(shù)中是沒有被改變的,所以最后輸出的結(jié)果,實(shí)參的值和原來是完全一樣的
(注意:swap函數(shù)只是交互了一下形參的地址而已,而沒有改變它們的值,如果改變了值,那實(shí)參的值也會跟著改變)
例如:
public void Swap2(object a, object b)
{
((MPigeon)a).Name = "Ronaldo";
((MPigeon)b).Name = "Rivaldo";
}
希望本文所述對大家的C#程序設(shè)計(jì)有所幫助。
相關(guān)文章
C#實(shí)現(xiàn)文件與Base64的相互轉(zhuǎn)換
本文主要介紹了C#實(shí)現(xiàn)文件與Base64的相互轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
C#實(shí)現(xiàn)遠(yuǎn)程連接ORACLE數(shù)據(jù)庫的方法
這篇文章主要介紹了C#實(shí)現(xiàn)遠(yuǎn)程連接ORACLE數(shù)據(jù)庫的方法,通過自定義函數(shù)db_connection_test實(shí)現(xiàn)遠(yuǎn)程連接Oracle數(shù)據(jù)庫的功能,是非常實(shí)用的技巧,需要的朋友可以參考下2014-12-12
C#實(shí)現(xiàn)DataTable映射成Model的方法(附源碼)
這篇文章主要介紹了C#實(shí)現(xiàn)DataTable映射成Model的方法,以實(shí)例形式較為詳細(xì)的分析了DataTable映射成Model的具體步驟與相關(guān)技巧,并附帶了完整實(shí)例源碼供讀者下載,需要的朋友可以參考下2015-11-11
C#學(xué)習(xí)筆記- 淺談數(shù)組復(fù)制,排序,取段,元組
下面小編就為大家?guī)硪黄狢#學(xué)習(xí)筆記- 淺談數(shù)組復(fù)制,排序,取段,元組。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-08-08

