上一堂課我們稍微提到過,就算傳回型別為void的方法,一樣可以撰寫return。
具有傳回值的方法,強制必須使用return陳述式;
void無傳回值方法不強制一定要寫 return:
程式執行到方法最後的}時,會自動回到呼叫處,不會攜帶任何資料。
但實務開發經常需要提前中斷方法,void方法可以使用不帶參數的return;直接離開方法:
語法:return; (後方不接任何運算式)
限制:只能標註為void的方法內使用
範例:
void SayHi()
{
Console.WriteLine("hello welcome to foxDevelop.com");
}Code language: C# (cs)
這是前面介紹過的範例,最簡單的void方法,裡面不需要撰寫return
呼叫這個方法時,會執行裡面的Writeline,輸出「hello welcome to foxDevelop.com」
static void Main()
{
Program program = new Program();
program.SayHi();
}
void SayHi()
{
Console.WriteLine("hello welcome to foxdevelop.com");
}Code language: C# (cs)

現在我們加上return;
void SayHi()
{
return; // return陳述式可以單獨使用,代表結束目前方法的執行
Console.WriteLine("hello welcome to foxdevelop.com");
}Code language: C# (cs)

執行之後不會有任何輸出,因為return;寫在Console.WriteLine上方;程式執行到return;就會直接返回呼叫端,後續程式碼不會執行,等同於提前結束。

return後面的程式碼永遠不會執行。
所以儘管是void方法,一樣可以使用return;,只是return後面不需要攜帶數值。

int Add(int a, int b)
{
return 100;
}Code language: C# (cs)
非void型別的方法,必須寫return 數值;
return後面一定要帶回傳結果,可以是變數、字面常數(像是100、3.14這類數值),或是運算式a+b。總之一定要有傳回結果。
如果沒有傳回結果,像void方法一樣只寫return;,程式會報錯。

void方法多出口return
static void Main()
{
Program program = new Program();
program.ShowMax(100,200);
}
void ShowMax(int a, int b)
{
if (a>b)
Console.WriteLine($"{a}>{b}"); // 條件成立就直接離開方法
if (b > a)
Console.WriteLine($"{b}>{a}");
}Code language: C# (cs)

看一個範例:
class Program
{
static void Main()
{
Program program = new Program();
program.Greet();
}
private void Greet()
{
DateTime dt = DateTime.Now;
if (dt.Hour < 12)
return; // 12點前直接離開,不執行輸出
Console.WriteLine("Good afternoon!");
}
}Code language: C# (cs)
如果現在時間過12點,就會印出下午好;反之不會輸出任何內容,直接返回。
void方法中的return