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

C#參數傳遞方式及使用情境

編輯:C#入門知識

 

一、        參數的一般傳遞方式

在c#中,除非使用ref或者out前綴,所有參數都通過值來傳遞。變量的棧數據會完整復制到目標參數中。分為以下3種情況:

1、 引用類型的變量只包含對象所在的內存地址,將要復制的是內存地址而不是對象本身,所以對底層對象的修改會保留。如果在方法內部將內存地址指向一個新對象,則方法結束後在方法中所作的修改會被丟棄(原指針仍指向原對象,方法參數指向新對象,結束後一起銷毀)。

class Program

{

    static void Main(string[] args)

    {

        Employee myE = new Employee() { id=4};

        Console.WriteLine("初始化為:"+myE.id);

        testMethod(myE);

        Console.WriteLine("退出方法後:"+myE.id);

        Console.ReadLine();

    }

    static void testMethod(Employee myE)

    {

        //myE.id = 5;

        myE = new Employee() { id = 5 };

        Console.WriteLine("更改為:"+myE.id);

    }

}

class Employee

{

    public int id { get; set; }

}

該程序輸出為

\

 

2、 值類型對象包含的是實際數據,傳遞給方法的是數據本身的副本,對值類型對象的修改在方法結束後會被丟棄。

 

3、String類型在實際使用中當做值類型對待。

二、        參數的特殊傳遞方式

1、ref參數

作用:迫使值參數通過引用傳送給方法。

2、out參數

作用:在參數未初始化的情況下,在一個函數中輸出多個值。隱含ref。

C#要求變量在被引用前必須初始化。盡管在傳遞前,可以用沒有意義的值初始化他們,然後用ref引用傳遞,但有時會引起混亂。用out可以使參數在未初始化情況下使用,邏輯性更強。

3、params數量可變參數

作用:自動把參數轉為數組。

調用方法有兩種,見示例。

static string Combine(params string[] paths)

{

    string result = string.Empty;

    foreach (string path in paths)

    {

        result = System.IO.Path.Combine(result, path);

    }

    return result;

}

static void test()

{

    //調用方法1,直接輸入,如果不使用params前綴就不能用這種方式

    string path1 = Combine("", "", "");

    //調用方法2,string數組,不使用params前綴也能用這種方式

    string path2 = Combine(new string[] {"","","" });

}

三、        傳遞參數注意事項:

 

1、 屬性不是變量,因此不能傳給out 或ref參數

2、 除非使用out前綴,所有參數必須在使用前初始化。

3、out參數必須在函數結束前賦值,賦值null也可以。

 


摘自 掛在牆上的天堂

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