C#參數傳遞方式

  • 702
  • 0

寫程式也一段時間,一直沒去搞懂一些東西

認真下定決心要去弄懂一些基礎知識

如有說錯也可以糾正<(-_-)>

在C#中,參數傳遞的方式有三種

1.傳值,例如以下程式

static int PassVal(int a)
{
  return a + 1;
}

int x = 2;
//取得PassVal的結果放到result變數
int result = PassVal(x);
Console.WriteLine(result);

最常看見的,把變數傳給另一個方法

在傳遞給方法時,會將參數複製一份給方法做處理

也就是說在記憶體中有兩叫X的變數,分別都有自己的一份資料

處理完成後把結果回傳

2.傳址(ref),例如以下程式

static void PassVal(ref int a)
{
   a = a + 1;
}

int x = 2;
PassVal(ref x);
Console.WriteLine(x);

定義方法時,加上ref關鍵字,呼叫時也要加上ref關鍵字

因此傳遞的是變數參考資料的位置

所以雖然沒回傳值,但是變數x的資料能然被改變了

使用傳址傳遞變數,變數要設定值

3.傳出(out)

static void PassVal(out string a)
{
   a = "123";
}

string x = 2;
PassVal(out x);
Console.WriteLine(x);

定義方法時,加上out關鍵字,呼叫時也要加上out關鍵字

跟第二種一樣

差別在於關鍵字不同以及變數不需要設定初始值