国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

asp.net(C#)函數對象參數傳遞的問題

2024-07-10 13:18:26
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:


class Program
{
static void Main(string[] args)
{
TestClass objA = new TestClass();
objA.Name = "I am ObjA";

Console.WriteLine(String.Format("In Main:{0}", objA.Name));

TestFun(objA);

Console.WriteLine(String.Format("In Main:{0}", objA.Name));

Console.Read();
}

static void TestFun(TestClass obj)
{
obj.Name = "I am be modified in TestFun";
Console.WriteLine(String.Format("In TestFun:{0}", obj.Name));
}

public class TestClass
{
public string Name { get; set; }
}
}


將對象objA作為參數傳遞給函數TestFun,這時傳遞的是對象objA的引用,所以在函數內對objA的修改會直接應用到這個對象本身。在函數TestFun內修改了形參obj的Name屬性,所以在Main中再調用objA.Name時這個屬性值就變為在TestFun中修改后的值了。這一點很好理解,運行結果也就是:

如果我們換一種寫法:

復制代碼 代碼如下:


class Program
{
static void Main(string[] args)
{
TestClass objA = new TestClass();
objA.Name = "I am ObjA";

Console.WriteLine(String.Format("In Main:{0}", objA.Name));

TestFun(objA);

Console.WriteLine(String.Format("In Main:{0}", objA.Name));

Console.Read();
}

static void TestFun(TestClass obj)
{
TestClass objB = new TestClass();
obj = objB;
obj.Name = "I am ObjB";
Console.WriteLine(String.Format("In TestFun:{0}", obj.Name));
}

public class TestClass
{
public string Name { get; set; }
}
}


那結果又將如何呢? 在TestFun中新創建了一個對象objB,接著將obj指向新創建的對象objB并對其的Name屬性賦值,所以在TestFun函數體里Console.WriteLine的時候obj.Name應該是“I am ObjB”。那在Main里調用了TestFun(objA)后objA指向的對象到底做了改變沒有,它仍舊指向原來的對象還是已經指向了在TestFun里創建的objB呢?

我的猜測是這樣的,將objA傳遞給TestFun傳遞的實際是objA的地址,在調用TestFun之前的對應關系是:

asp.net(C#)函數對象參數傳遞的問題


所以在TestFun函數中,一開始obj指向的還是objA對象。當在TestFun中創建了一個對象objB后,內存模型變為:

  

asp.net(C#)函數對象參數傳遞的問題

  所以執行完TestFun函數后,Main函數中objA仍舊指向原來的objA對象,故運行結果如下:

 

注:本文中的內存模型僅是個人猜測,肯定有不正確或者不嚴謹的地方,希望不要誤導大家,也歡迎指正。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 紫云| 财经| 井研县| 瓦房店市| 保康县| 新竹市| 塔城市| 阿拉善盟| 新巴尔虎右旗| 星座| 榆社县| 任丘市| 泸定县| 屯留县| 阳江市| 屏东县| 台安县| 缙云县| 定陶县| 松潘县| 邯郸县| 临湘市| 仙桃市| 兴国县| 平和县| 晋江市| 峨边| 兴安县| 顺昌县| 图片| 石城县| 西藏| 许昌市| 天津市| 西吉县| 秦皇岛市| 武宣县| 噶尔县| 潞西市| 遂溪县| 中方县|