เมธอด

11 February 2016

ในบทนี้ เราจะพูดเกี่ยวกับเมธอดในภาษา C# คุณจะได้เรียนวิธีการสร้างเมธอดและการเรียกใช้มัน

เมธอด คืออะไร

ในภาษา C# เมธอดนั้นเป็นส่วนหนึ่งของโปรแกรมเพื่อให้ดำเนินการบางอย่าง กล่าวอีกนัยหนึ่ง มันคือส่วนย่อยของโปรแกรมที่ถูกเรียกโดยโปรแกรมหลักและมันสามารถนำกลับมาใช้ซ้ำได้ การสร้างเมธอดช่วยให้ลดจำนวนของซอสโค้ดที่เขียนขึ้นได้ การนำกลับมาใช้ใหม่ และทำให้ง่ายในการแก้ไขโปรแกรมในภายหลัง

เมธอด ในอีกคำหนึ่งที่รู้จักกันก็คือ ฟังก์ชัน ดังนั้นอย่างสับสนระหว่างสองคำนี้ แต่คำว่าเมธอดใช้สำหรับฟังก์ชันที่อยู่ในคลาส (การเขียนโปรแกรมเชิงวัตถุ) อย่างไรก็ตามในบทเรียนนี้เราอาจจะใช้ทั้งสอง

เมธอดในภาษา C#

ในภาษา C# จะมีเมธอดอยู่สองประเภท แบบแรกคือ predefined method มันคือเมธอดที่สร้างมากับไลบรารี่มาตรฐานของภาษา C# ซึ่งมันจะอยู่ในคลาส ยกตัวอย่างเช่น System.WriteLine() นี่บ่งบอกว่าเมธอด WriteLine นั้นอยู่ในคลาส System และเมธอดประเภทที่สองคือ user-defined method เป็นเมธอดที่เขียนขึ้นเองโดยโปรแกรมเมอร์ ในบทเรียนนี้ เราจะพูดเน้นในแบบที่สอง

User-defined method

User-defined method (เมธอดที่สร้างโดยผู้ใช้ ) นั้นเป็นเมธอดที่ถูกสร้างขึ้นเพื่อทำงานบางอย่างโดยผู้ใช้ เพราะว่าภาษา C# นั้นเป็นภาษาในการเขียนโปรแกรมเชิงอ็อบเจ็ค เมธอดนั้นจะต้องอยู่ในคลาส คุณจะได้เรียนรู้เกี่ยวกับคลาสภายหลังในบทเรียนนี้

ในการสร้างเมธอด มันมีรูปแบบดังนี้:

access_modifier type identifier (parameter1, parameter2, ... ) {
    // statements
    return result;
}

รูปแบบนี้ถูกใช้เมื่อคุณต้องการสร้างเมธอดที่มีการส่งค่ากลับ (return) ไปยังส่วนของโปรแกรมที่เรียกใช้มัน มาดูอีกรูปแบบหนึ่ง

access_modifier void identifier (parameter1, parameter2, ... ) {
    // statements
}

รูปแบบนี้จะถูกใช้เมื่อไม่มีค่าที่จะส่งหลับไป คุณสังเกตุในคำสั่งvoidนั้นจะถูกใช้แทน return type

ต่อไป เราจะอธิบายส่วนต่างๆ ของการประกาศเมธอด

  • access_modifier:บ่งบอกถึงระดับการเข้าถึงได้ของเมธอดมรคลาส โดยจะมีอยู่ 4 แบบคือ public protected private และ internal ถ้าหากคุณปล่อยให้มันว่างปล่าวนั้นจะเป็นแบบ protected
  • **type **: เป็นประเภทของข้อมูลที่คุณอยากจะส่งค่ากลับ มันสามารถเป้นชนิดข้อมูลพื้นฐานในภาษา C# หรือเป็นอ็อบเจ็ค เช่น int float String Class_Name เป็นต้น เมื่อเมธอดไม่มีค่าอะไรที่จะส่งกลับเราจะใช้คำสั่ง void แทนเหมือนที่คุณเห็นในรูปแบบที่สอง
  • parameters: เป็นค่าของตัวแปรที่ส่งเข้ามาในเมธอด และเป็นทางเลือก
  • **return ** เป็นคำสั่งที่ใช้ส่งค่าข้อมูลกลับ ยกตัวอย่างเช่น เมธอดที่มี return เป็น int นั้นค่าที่ส่งกลับจะต้องเป็นตัวเลขจำนวนเต็ม
  • static: คำสั่ง static ถูกใช้ประกาศหลังจาก access modifier ถ้าเมธอดที่ถูกสร้างขึ้นนั้นจำเป็นที่จะต้องแชร์บางอย่างที่เหมือนกันสำหรับทุกๆ อ็อบเจ็คที่สร้างจากคลาส

สร้างเมธอด

ในการที่จะสร้างเมธอด คุณจะเป็นต้องทำตามรูปแบบข้างบน มาดูตัวอย่างวิธีการสร้างเมธอดในภาษา C#

using System;

class CreatingMethod
{
    static void Main(string[] args)
    {
        String name = "Marcus";
        int sex = 0;
        String sport= "hockey";

        displayBio(name, sex, sport);

        displayBio("Janifer", 1, "swimming");
        displayBio("Carl", 0, "football");
    }

    static void displayBio(String n, int s, String sp) {
        if (s == 0) {
            Console.WriteLine(n + " has " + sp + " as his favorite sport.");
        } else {
            Console.WriteLine(n + " has " + sp + " as her favorite sport.");
        }
    }
}

ในตัวอย่าง เราได้สร้างเมธอดเพื่อแสดงกีฬาโปรดของบุคคล สังเกตุว่าเมธอด main นั้นสร้างจากคำสั่ง static ดังนั้นเมธอดที่เรียกใช้จากเมธอด Main ก็จะต้องสร้างจากคำสั่ง static ด้วยเช่นกัน

เราได้ตั้งชื่อให้กับเมธอดของเราว่า displayBio และมันมี 3 พารามิเตอร์ที่ส่งเข้าในเมธอดนี้ เราเรียกใช้เมธอดนี้ในเมธอด Main และเราจะส่งอากิวเมนต์ให้สอดคล้องกันกับลำดับพารามิเตอร์ของมัน คำสัง void นั้นหมายความว่าเมธอดนี้จะไม่มีการส่งค่ากลับไป เนื่องจากว่าเราต้องการแค้นำค่ามาแสดงผลในเมธอดเท่านั้น

Marcus has hockey as his favorite hobbie.
Janifer has swimming as her favorite hobbie.
Carl has football as his favorite hobbie.

และนี่เป็นผลลัพธ์ของโปรแกรมที่แสดงชื่อ เพศ และกีฬาโปรดในเมธอด

ต่อไปมาดูตัวอย่างการสร้างเมธอดที่มีการส่งค่ากลับ

การสร้างเมธอดที่มีการส่งค่ากลับ

โดยทั่วไปแล้ว เมธอดนั้นจะต้องมีค่าที่จะส่งกลับไปนำไปใช้ในส่วนที่ถูกเรียกของโปรแกรม คิดว่าเมธอดเป็นเหมือนที่สำหรับการทำงานบางอย่างและส่งแค่ผลลัพธ์กลับไปเมื่อมันทำงานเสร็จสิ้น

using System;

class CreatingMethod2
{
    static void Main(string[] args)
    {
        int a = 10;
        int b = 25;
        Console.WriteLine(getText(a) + getSum(a));
        Console.WriteLine(getText(b) + getSum(b));
        Console.WriteLine(getEndText());
    }

    static String getText(int n) {
        return "Sum bewteen 1-" + n + " is ";
    }

    static int getSum(int n) {
        int sum = 0;
        for (int i = 1; i <= n; i++) {
            sum += i;
        }
        return sum;
    }

    static String getEndText() {
        return "Program ended.";
    }
}

จากตัวอย่าง นี่เป็นโปรแกรมในการหาผลลรวมของตัวเลขระหว่าง 1 - n เมื่อ n คืออากวิเมนต์ที่ส่งเข้ามายังเมธอด และส่งค่ากลับไปหลังจากที่คำนวณเสร็จแล้ว

int x = getSum(10); // 55
boolean y = (getSum(10) == 55);

จากโค้ดคำสั่งด้านบน มันจะมีค่าเท่ากับ 55 และมีประเภทข้อมูลเป็น Integer ซึ่งตรงกับในตอนที่สร้างเมธอด ดังนั้น expression (getSum(10) == 55) จะมีค่าเป็นจริง

Sum bewteen 1-10 is 55
Sum bewteen 1-25 is 325
Program ended.

และนี่เป็นผลลัพธ์ของโปรแกรมเมื่อเราได้ส่งตัวเลขต่างๆ เข้าไปยังเมธอด และผลลัพธ์ของมัน

ในบทนี้ คุณได้เรียนสิ่งที่จำเป็นที่จะต้องรู้เกี่ยวกับเมธอด และได้เรียนรู้ทั้งเมธอดที่มีการส่งค่ากลับและไม่มีการส่งค่ากลับ

บทความนี้เป็นประโยชน์หรือไม่?Yes·No