Main Method
จิณณะ อภิรักษาภรณ์ 650710071
ทักทายคุณผู้อ่านอีกครั้ง ที่กำลังจะเรียนรู้ C# ด้วยนะครับ ตอนนี้คุณก็เริ่มต้นการเรียนมาซักบทแล้ว ในบทความนี้เราจะมาเรียนรู้เรื่อง "Main Method" กัน
Main method มันคือส่วนเริ่มต้นของการเขียนโปรแกรมเหมือนกับภาษาอื่นๆ เวลาเรารันโปรแกรมโค้ดส่วนของ Main Method จะเป็นส่วนแรกที่เรียกใช้
แล้ว Main Method สามารถมีได้ในหลายๆคลาสใน 1 ไฟล์ ตามความเหมาะสม สำหรับการเรียนรู้แล้วไม่ควร แต่ก็สามารถมี Main Method ได้ในหลายๆคลาส แต่ขอข้ามผ่านส่วนตรงนี้ไป และในบทนี้ขอใช้ Main Method เดียว โดยผมจะแสดงโครงสร้างของโค้ด และตัวอย่างที่ใช้ชื่อคลาสว่า "Test"
หากเปรียบเทียบกับภาษาอื่นๆ เช่น C, Java, Python
#include <stdio.h>
void main() {
printf("Sawadee kub\n");
}
จากโค้ดตัวอย่างของ C# สำหรับคนที่ยังงงๆ สงสัยว่าแต่ละส่วนที่มีจะเป็นอย่างไร และไม่มีจะเป็นอย่างไร เราจะอธิบายทีละบรรทัดกัน
using System ส่วนนี้คือสำคัญมากถ้าหากว่าไม่มีส่วนนี้โปรแกรมของเราจะทำงานไม่ได้ ยกตัวอย่างเหมือนมื้ออาหารที่ไม่มีอุปกรณ์ในการกิน นั่นเอง
static สำหรับในเรื่อง Main Method การไม่มีคีย์เวิร์ด "static" ไม่ได้ เพราะ Main Method บังคับคู่กับ static นั่นเอง
void เป็นคีย์เวิร์ดสำหรับบอกว่าเมธอดนี้เมื่อทำงานเสร็จแล้วไม่ต้องรีเทิร์นค่ากลับมา และเมื่อไม่มีรีเทิร์นก็ต้องมีรีเทิร์นเช่นกัน ถ้าเปรียบเทียบเหมือนกับงานที่อาจารย์สั่งงานกับนักศึกษาแล้วให้ส่งหริอไม่ส่งงานแล้วแต่อาจารย์กำหนด ถ้าไม่มีคำสั่งบอกว่าให้ส่งหรือไม่ส่ง นักศึกษาก็ไม่สามารถรู้ได้ว่าตัวเองต้องส่งงานหรือไม่ส่งงาน โปรแกรมก็เหมือนนักศึกษา ถ้าหากไม่มีคำสั่งส่งค่าหรือไม่ส่งค่า โปรแกรมก็จะเอ๊ะๆว่าส่งหรือไม่ส่ง เมื่อโปรแกรมไม่รู้งั้นตายดีกว่าขึ้น error ไป
string[ ] args ถ้าเราไม่มีส่วนนี้คำสั่งบางคำสั่งที่เอาไว้สำหรับรับข้อมูลจะไม่สามารถทำงานได้ แต่ถ้าไม่ได้ใช้รับข้อมูลโปรแกรมยังรันได้ตามปกติ
เกริ่นส่วนเริ่มต้นของ Main Method ไปแล้วนะครับ ที่นี้ก็จะเข้าส่วนที่เนื้อหาลึกซึ้งขึ้นมาอีกนิดนึง ส่วนแรกได้มีการอธิบายไปแล้วว่าการประกาศใช้ Main Method มีไม่มีคีย์เวิร์ดเป็นอย่างไรทีนี้ส่วนท้ายตรงนี้จะขยายเพิ่มเติมว่า นอกจากส่วนที่มี หรือไม่มีแล้ว ยังมีส่วนที่ใช้แทนกัน หรือคีย์เวิร์ดเพิ่มเติมอะไรบ้าง
ย้อนกลับมาทบทวนกับ Main Method โครงสร้างง่ายๆกันก่อน
จากรูปแบบแรก เมธอดหลักนี้หมายความว่า เมื่อคุณรันโปรแกรม โปรแกรมจะทำงานที่ static void Main ก่อน จากคีย์เวิร์ด static ที่คู่กับ Main เป็นการบอกโปรแกรมให้อ่านส่วนนี้เป็นอันดับแรก และเมื่อทำงานเสร็จแล้วไม่ต้องคืนค่าใดๆจากคีย์เวิร์ด void
จากรูปแบบที่สอง เมธอดหลักนี้หมายความว่า เมื่อคุณรันโปรแกรม โปรแกรมจะทำงานที่ static void Main ก่อน จากคีย์เวิร์ด static ที่คู่กับ Main เป็นการบอกโปรแกรมให้อ่านส่วนนี้เป็นอันดับแรก และเมื่อทำงานเสร็จแล้วต้องคืนค่าใดๆที่เป็นเลขจำนวนเต็ม จากคีย์เวิร์ด int
จากรูปแบบที่สาม เมธอดหลักนี้หมายความว่า เมื่อคุณรันโปรแกรม โปรแกรมจะทำงานที่ static void Main ก่อน จากคีย์เวิร์ด static ที่คู่กับ Main เป็นการบอกโปรแกรมให้อ่านส่วนนี้เป็นอันดับแรก เมื่อทำงานแล้วเจอคำสั่งรับข้อมูลจากผู้ใช้ สามารถรับข้อมูลจากคีย์บอร์ดของผู้ใช้จากคีย์เวิร์ด string [ ] args หากไม่มี string[ ] args เมื่อมีคำสั่งรับข้อมูลจากผู้ใช้จะไม่สามารถรับข้อมูลจากผู้ใช้ได้ และเมื่อทำงานเสร็จแล้วต้องคืนค่าใดๆที่เป็นเลขจำนวนเต็ม จากคีย์เวิร์ด int
จากรูปแบบที่สี่ เมธอดหลักนี้หมายความว่า เมื่อคุณรันโปรแกรม โปรแกรมจะทำงานที่ static void Main ก่อน จากคีย์เวิร์ด static ที่คู่กับ Main เป็นการบอกโปรแกรมให้อ่านส่วนนี้เป็นอันดับแรก เมื่อทำงานแล้วเจอคำสั่งรับข้อมูลจากผู้ใช้ สามารถรับข้อมูลจากคีย์บอร์ดของผู้ใช้จากคีย์เวิร์ด string [ ] args และเมื่อทำงานเสร็จแล้ว ไม่ต้องคืนค่าใดๆจากคีย์เวิร์ด void
เราก็รู้จักกับการประกาศ Main Method แบบง่ายๆไปบ้างแล้ว ส่วนที่ลึกซึ้งขึ้นมานิดนึงเพิ่มคีย์เวิร์ดเพียง 2-3 คำแต่ก่อนจะเข้าเนื้อหา เรามาปรับความเข้าใจให้เหมือนกันก่อน
โดยผมขอยกตัวอย่างเหตุการณ์ตอนหุงข้าวกินที่บ้าน เวลาเราจะทานข้าวเราจะต้องหุงข้าว และทำกับข้าวก่อน ซึ่งขั้นตอนแรกนี้จะใช้วิธีการหุงข้าวก่อนโดยใช้เวลา 40 นาที และทำกับข้าว 20 นาที สำหรับโปรแกรมที่เขียนทั่วไปแล้วนั้นลำดับขั้นตอนการทำงาน จะเป็นขั้นตอนแบบ หุงข้าว 40 นาที ถึงจะค่อยทำกับข้าว รวมแล้วใช้เวลา 60 นาที
แต่ว่าใช้ชีวิตจริงของเรานั้นจะไม่ทำเช่นนั้น ในชีวิตจริงเมื่อเราหุงข้าวเสร็จแล้วเราจะทำกับข้าวให้เสร็จระหว่างรอข้าวหุงสุก ซึ่งหากใช้วิธีนี้กระบวนการนี้จะใช้เวลาแค่ 40 นาทีเท่านั้น ซึ่งลักษณะแบบนี้เรียกว่า "Asynchronous" มันคือกระบวนการทำงานที่ไม่ต้องรอให้กระบวนการเสร็จไปทีละขั้นตอน แต่สามารถทำหลายๆกระบวนการในเวลาเดียวกัน ในภาษา C# ก็มีกระบวนการลักษณะนี้เช่นเดียวกันโดยใช้คีย์เวิร์ด async ตอนนี้เรารู้แล้วว่า Asynchronous คืออะไร เรามาต่อกับลักษณะ Main Method ส่วนสุดท้ายกัน
จากโค้ดตัวอย่างจะสังเกตได้ว่า คีย์เวิร์ด void มันหายไปแต่มี async Task เข้ามาแทน ซึ่ง Task จะแทนคีย์เวิร์ด void ถ้ามี Task คำเดียว คือ Main Methodไม่ต้องมีรีเทิร์นค่าใดๆ ยกเว้น Task<//datatype> ข้างใน "< >" เป็นประเภทข้อมูลใดๆก็ได้ ซึ่งหมายความว่าเมื่อมีการทำงานเสร็จสิ้นใน Main Method ต้องคืนค่าใดๆตามประเภทข้อมูลใน "< >" และ async คือคีย์เวิร์ดที่บอกว่าเมื่อโปรแกรมทำงาน เมื่อเจอเมธอดใดๆ จะทำงานเมธอดนั้นพร้อมกับรันคำสั่งอื่นๆใน Main Method ไปพร้อมๆกัน
จบไปแล้วส่วนของ Main Method ของ C# หวังเป็นอย่างยิ่งว่า ผู้ที่ศึกษา C# จะได้ความรู้จากบทนี้ไม่มากก็น้อย ขอบคุณครับ
Reference
BillWagner. (22 มิถุนายน 2567). Main() and command-line arguments. Learn Microsoft.https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/program-structure/main-command-line
Geeks for Geeks. (19 กรกฎาคม 2567). Main Method in C#. https://www.geeksforgeeks.org/main-method-in-c-sharp/
Last updated