天天看點

C# 中ref和out的使用和差別

經常看見ref、out、param這三個參數修飾符,在C#中偶爾使用一下,這三個參數修飾符是從C裡面發展過來的,

簡單說明下:

 ref 和 out 主要是傳遞參數時使用的,比如你寫了一個方法傳回string類型,

  1. private string MyFunction()
  2. {
  3.         return"abc";
  4. }

你也可以換成下面的形式:

  1. private void MyFunction(ref string str)
  2. {
  3.    str="abc";
  4. }

或者這樣:

  1. private void MyFunction(out string str)
  2. {
  3.    str="abc";
  4. }

那怎麼調用這個函數呢。。

  1. // 針對于ref參數修飾符
  2. string returnValue=string.Empty;
  3. MyFunction(ref returnValue);
  4. // 針對于out參數修飾符
  5. string returnValue;
  6. MyFunction(out returnValue);

從兩者的調用上就可以看出差別,在帶有ref參數修飾符的參數時,必須給ref參數初始化值,

string returnValue=string.Empty;

代碼中給參數初始化為空。

這是因為帶有ref參數修飾符的參數是傳遞的位址,

而out參數修飾符是傳回的值。

繼續閱讀