void方法中的return

上一堂課我們稍微提到過,就算傳回型別為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

Previous:

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *