函式(function) 和 方法(method) 區別

平時在寫 JavaScript 時會很自然的把下面的程式碼區塊稱為「函式(function)」
    
function add(a, b) {
    return a + b;
}

let result = add(1, 2); // 3
    

在寫 C#, Java 時也會很自然的把下面的程式碼區塊稱為「方法(method) 」
    
    public int Add(int a, int b)
    {
        return a + b;
    }
    

但是其實一直都不太明白「函式(function)」和「方法(method)」具體的區別,感覺都是一個可以呼叫的「程式碼區塊」,或是說一個「功能」、「一組程式碼片段」,可以有傳入參數、可以有回傳值的一個「處理邏輯定義」。
後來研究了一下才發現原來兩者真的有差異:

函式(function):來源於數學中的概念,是獨立的程式碼區塊,不依賴某個特定的物件或類別。
方法(method):物件導向程式設計中的詞彙,指的是在物件或類別中定義的「方法」,屬於類別/物件的「行為」,不像函式(function)可以獨立存在。

在 C# 中因為沒有「全域函式」,全部都是定義在類別中,所以 C# 沒有「函式(function)」,只有「方法(method)」
註:C# 的頂層語句 (Top-Level Statements)在編譯時會自動產生 Program 類別,所以也不能算是「全域函式」

參考資料:
StackOverflow - What's the difference between a method and a function?
Microsoft.Learn - Top-level statements - programs without Main methods

留言

張貼留言

如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com