程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#——傳值參數(3)

C#——傳值參數(3)

編輯:C#入門知識

C#——傳值參數(3)。本站提示廣大學習愛好者:(C#——傳值參數(3))文章只能為提供參考,不一定能成為您想要的結果。以下是C#——傳值參數(3)正文


上篇文章我與大家共同窗習了 值參數——援用類型
這次與大家共同窗習 傳值參數--援用類型,不創立新對象,只操作對象
這是個思想導圖:

我們仍需記住:1.值參數創立變量的正本 2.對值參數的改動不會影響變量的值
看一個例子:

 1     class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             Student stu = new Student() { Name = "Elliot" };
 6             Console.WriteLine("Name is {0},  HashCode is {1}", stu.Name, stu.GetHashCode());
 7             UpdateObject(stu);
 8             //調用辦法後我們再打印一遍
 9             Console.WriteLine("Name is {0},  HashCode is {1}", stu.Name, stu.GetHashCode());
10             
11         }
12 
13         //沒有創立新對象
14         static void UpdateObject(Student stu)
15         {
16             stu.Name = "Mark";  
17             Console.WriteLine("Name is {0},  HashCode is {1}",stu.Name,stu.GetHashCode());
18         }
19     }
20 
21     class Student
22     {
23         public string Name { get; set; }
24     }
25 }

 


運轉後果:


看:
第一行是我們在Main辦法裡創立一個對象後立刻打印出他的名字和hashcode;
第二行則是UpdateObject辦法裡打印的;
第三行則是在調用完辦法後又打印了一遍
發現後兩行是完全一樣的
解釋:
援用類型的變量存儲的是對象在堆內存中的地址,傳出去的參數是變量的一個正本,所以它們都存儲的是對象的地址,我們經過參數訪問了對象,修正了對象裡的值,由於變量和參數都指向的是同一個對象,所以它們的名字就變得一樣,而hashcode不斷一樣。

對象還是那個對象,但對象裡的值改動了
這就是我們用值參數只更新對象而不創立新對象
留意:
在理想任務中,像這樣經過傳出去的參數改動對象裡的值的狀況是少見的,由於辦法次要輸入還是靠前往值,我們把這種經過傳出去的參數改動對象裡的值的操作叫做某個辦法的反作用(side-effect),任務中要盡量防止這種反作用。

------------------------------------------------------------------------------------------------

To be continued!

下篇與大家共同窗習 援用參數

------------------------------------------------------------------------------------------------

希望大家積極評論,指出我的問題所在,共同交流,共同提高!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved