Andy's blog

If you always do what you've always done, you'll always get what you've always got.

0%

2021-01-26-out、void、ref說明

今天在撰寫專案時,突然忘記out使用方式,索性今天晚上複習一下其他參數修飾詞。


參考資料:
C# Method - Main、void、ref、out、overloading - 教學筆記
[C#] Out 與 ref 差異


void

當method不回傳值時,就必須使用 void類型

1
2
3
4
5
6
7
8
9
10
namespace demo
{
class Test
{
static void Hello(){
console.WriteLine("11");
}
}
}

Reference

必須先給定初始值,會將變數記憶體位置傳給Methods

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
namespace demo
{
class Test
{
static void Hello(){
int a = 10;
Calculate(ref a);
console.WriteLine(a); //100
}

static void Calculate(ref int a)
{
a = a *10;
}

}
}

Out

不需給定初始值,但必須在程式結束前需要初始化參數(給值)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
namespace demo
{
class Test
{
static void Hello(){
Calculate(out a);
console.WriteLine(a); //33
}

static void Calculate(out int a)
{
a = 33;
}

}
}

小結論

  1. ref 需要將參數初始化而Out 不需要
  2. Out 與 ref 都是以 By Reference 作為參數傳遞
  3. ref 需要在執行前初始化參數(給值)而 out 是在程式結束前需要初始化參數(給值)