C#之out,ref關鍵字

在C#中,咱們會見到out,ref關鍵字,這跟java很不同,接下來,咱們就來了解一番,java

1,out關鍵字spa

  概念:一個帶有輸出參數的的方法(方法的的參數有被out關鍵字修飾),有義務在方法退出的時候給這個參數一個恰當的賦值,若是沒有,方法編譯會報錯。設計

  例子:僞代碼以下string

  static void doMethod(int y,out int ans) it

  {編譯

    ans = y*2;//被關鍵字out修飾的參數ans被賦值變量

  }引用

  static void main(string args[]){方法

      int ans;static

      doMethod(90,out ans);//調用帶輸出參數的方法,也必須使用out關鍵字修飾

  }

上面的例子說明,用輸出參數返回一個數的一半,看似沒有發現out的意義,實際上設計者設計out關鍵字是有一個頗有用的用途的:那就是咱們經過out關鍵字,能夠在一個方法中一次就輸出多個返回值,以下

  static void doMethod(out string name,out int age,out char sex)

  {

    name = "張三";

    age = "30";

    sex = '1';  

  }

2,ref關鍵字

  ref 關鍵字使參數按引用傳遞。其效果是,當控制權傳遞迴調用方法時,在方法中對參數所作的任何更改都將反映在該變量中。 

  static void Main(string[] args)
  {
    int x = 1;
    int y = 1;
    doSome(ref x);
    doSome(y);
    Console.Write(x+"");
    Console.Write(y + "");

  }
  static void doSome(ref int x)
  {
    x = 10;
  }
  static void doSome( int x)
  {
    x = 10;
  }

以上僞代碼可看出,ref關鍵字是對變量的引用進行改變,因此doSome(ref int x)輸出10,doSome(int x)輸出1,另外能夠看出,重載時,ref修飾和不修飾的的簽名被認爲是不一樣的,重載能夠成功。

相關文章
相關標籤/搜索