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

C#中參數傳遞

編輯:C#入門知識

一、參數的一般傳遞方式
  在c#中,除非使用ref或者out前綴,所有參數都通過值來傳遞。變量的棧數據會完整復制到目標參數中。分為以下3種情況:
1、 引用類型的變量只包含對象所在的內存地址,將要復制的是內存地址而不是對象本身,所以對底層對象的修改會保留。如果在方法內部將內存地址指向一個新對象,
   則方法結束後在方法中所作的修改會被丟棄。
 
 1 class Program
 2
 3 {
 4
 5     static void Main(string[] args)
 6
 7     {
 8
 9         Employee myE = new Employee() { id=4};
10
11         Console.WriteLine("初始化為:"+myE.id);
12
13         testMethod(myE);
14
15         Console.WriteLine("退出方法後:"+myE.id);
16
17         Console.ReadLine();
18
19     }
20
21     static void testMethod(Employee myE)
22
23     {
24
25         //myE.id = 5;
26
27         myE = new Employee() { id = 5 };
28
29         Console.WriteLine("更改為:"+myE.id);
30
31     }
32
33 }
34
35 class Employee
36
37 {
38
39     public int id { get; set; }
40
41 }
 
該程序輸出為
\
 
2、 值類型對象包含的是實際數據,傳遞給方法的是數據本身的副本,對值類型對象的修改在方法結束後會被丟棄。
3、String類型在實際使用中當做值類型對待。
二、參數的特殊傳遞方式
1、ref參數
作用:迫使值參數通過引用傳送給方法。
2、out參數
作用:在參數未初始化的情況下,在一個函數中輸出多個值。隱含ref。C#要求變量在被引用前必須初始化。盡管在傳遞前,可以用沒有意義的值初始化他們,
然後用ref引用傳遞,但有時會引起混亂。用out可以使參數在未初始化情況下使用,邏輯性更強。
3、params數量可變參數
作用:自動把參數轉為數組。調用方法有兩種,見示例。
 
 1 static string Combine(params string[] paths)
 2
 3 {
 4
 5     string result = string.Empty;
 6
 7     foreach (string path in paths)
 8
 9     {
10
11         result = System.IO.Path.Combine(result, path);
12
13     }
14
15     return result;
16
17 }
18
19 static void test()
20
21 {
22
23     //調用方法1,直接輸入,如果不使用params前綴就不能用這種方式
24
25     string path1 = Combine("", "", "");
26
27     //調用方法2,string數組,不使用params前綴也能用這種方式
28
29     string path2 = Combine(new string[] {"","","" });
30
31 }
 
三、傳遞參數注意事項:
1、 屬性不是變量,因此不能傳給out 或ref參數
2、 除非使用out前綴,所有參數必須在使用前初始化。
3、 out參數必須在函數結束前賦值,賦值null也可以。

 

 

摘自 追風小子

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