寫程式也一段時間,一直沒去搞懂一些東西
認真下定決心要去弄懂一些基礎知識
如有說錯也可以糾正<(-_-)>
在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關鍵字
跟第二種一樣
差別在於關鍵字不同以及變數不需要設定初始值