C#關鍵字params, ref, out的用法

來源:互聯網
上載者:User

第一次使用params這個關鍵字,發覺這是蠻好用的一種參數形式。

1、params

params關鍵字用在指定參數可變的場合中。在方法聲明中加了params關鍵字後不能再同時定義其他參數,在聲明方法中只允許params這個關鍵字的存在。

範例程式碼:

class Test{public void TestIntParams(params int[] vals){if(vals != null && vals.Length > 0){for(int i=0; i<vals.Length; ++i){// Do something}}}static void Main(){int a=1, b=2, c=3;int[] array = new int[] { 4, 5, 6 };// Invoke methods using three waysTestIntParams(a, b);TestIntParams(a, b, c);TestIntParams(array);}}

2、ref

ref 關鍵字使參數按引用傳參,啟動並執行結果就是在被調用的方法中對該變數的修改效果將會持續到返回調用方法之後。
(1)若要使用 ref 參數,則方法定義和調用方法都必須顯式使用 ref 關鍵字。
(2)傳遞到 ref 參數的參數必須最先初始化。這與 out 不同,out 的參數在傳遞之前不需要顯式初始化。
(3)屬性不是變數,因此不能作為 ref 參數傳遞。
(4)儘管 ref 和 out 在運行時的處理方式不同,但它們在編譯時間的處理方式是相同的。因此,如果一個方法採用 ref 參數,而另一個方法採用 out 參數,則無法重載這兩個方法。
(5)如果一個方法採用 ref 或 out 參數,而另一個方法不採用這兩類參數,則可以進行重載。

3、out

out關鍵字與ref相似,採用按引用傳參。

(1)ref 要求變數必須在傳遞之前進行初始化。
(2)儘管作為 out 參數傳遞的變數不需要在傳遞之前進行初始化,但需要調用方法以便在方法返回之前賦值(同時在被呼叫者法體中,必須在使用該參數之前賦初始值)。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.