C#方法的參數類型

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   資料   for   html   

在C#中,方法的參數類型有四種:

  • 實值型別 
  • 參考型別
  • 輸出類型 
  • 數組型參數

 

值參數:

所謂值參數,就是利用值向方法傳遞參數時,編譯器給實參的值做一份拷貝,並將此拷貝傳遞給該方法,這樣做的結果就是被調用的方法不會修改實參的值,保證了實際值的安全,在調用方法時,如果形參的類型時實值型別的話,必須保證實參的類型也是實值型別的資料.

例子:

public class MyClass{    public MyClass()    {        //        //TODO: 在此處添加建構函式邏輯        //    }    public void ChangeValue(string value)    {        value = "Value is Changed!";    }}-------------------------------------string value = "Value";Response.Write(value+"<br/>");MyClass mc = new MyClass();mc.ChangeValue(value);Response.Write(value);

 

效果:

引用參數:

使用ref關鍵字可以使參數按照引用傳遞.在需要傳遞迴調用方法時,在方法中對參數所做的任何更改都將反映在該變數中,若使用ref關鍵字,則在方法定義和調用方法時都必須顯式使用ref關鍵字.

注意ref的使用!

例子:

public class MyClass{    public MyClass()    {        //        //TODO: 在此處添加建構函式邏輯        //    }    public void ChangeValue(ref string value)    {        value = "Value is Changed!";    }}-----------------------------        string value = "Value";        Response.Write(value+"<br/>");        MyClass mc = new MyClass();        mc.ChangeValue(ref value);        Response.Write(value);

 

效果:

輸出參數:

使用out關鍵字來進行引用傳遞,這和ref關鍵字很累世,不同之處在於ref要求變數必須在傳遞之前就進行初始化,若使用out關鍵字,則方法定義和調用時都必須顯式的使用out關鍵字.

例子:

public class MyClass{    public MyClass()    {        //        //TODO: 在此處添加建構函式邏輯        //    }    public void ChangeValue(out string value)    {        value = "Value is Changed!";    }}---------------------------------        string value ;        MyClass mc = new MyClass();        mc.ChangeValue(out value);        Response.Write(value);

 

效果:

數組型參數:

數組型參數就是聲明params關鍵字,用於指定在參數數目可變處採用參數的方法參數.

在方法聲明中的params關鍵字之後不允許任何其他參數,並且在方法聲明中只允許一個params關鍵字.

例子:

public class MyClass{    public MyClass()    {        //        //TODO: 在此處添加建構函式邏輯        //    }    public void ChangeValue(params string[] value)    {        foreach (string s in value)        {            HttpContext.Current.Response.Write(s + "<br/>");        }    }}------------------------------------------        string value1 = "Value1";        string value2 = "Value2";        MyClass mc = new MyClass();        mc.ChangeValue(value1, value2);

 

效果:

 

另:

數群組類型的參數:

數群組類型是參考型別的資料,所以也應歸類於參考型別.

public class MyClass{    public MyClass()    {        //        //TODO: 在此處添加建構函式邏輯        //    }    public void ChangeValue(string[] value)    {        value[0] = "This is Value0,Changed!";    }}----------------------------------------------        string[] value = { "Value1", "Value2" };        Response.Write(value[0] + "<br/>");        MyClass mc = new MyClass();        mc.ChangeValue(value);        Response.Write(value[0] + "<br/>");

 

 

效果:

 

注意:

ref和out的區別:(ref初始化)

傳遞到ref參數的參數必須最先初始化,而out的參數在傳遞之前不必初始化.

http://www.cnblogs.com/oneword/archive/2009/08/19/1549464.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.