Method

โดยทั่วไปแล้วเกือบทุกภาษาจะมีการทำงานที่แบบ sub routine ซึ่งอาจมีชื่อเรียกต่างกันไปตามแต่ภาษาเช่น procedure, function, sub หรืออะไรก็แล้วแต่ ในภาษา ที่เป็น OOP เรามักจะเรียกฟังก์ชันว่า method เนื่องจากเรามักจะใช้คำว่า function ในความหมายที่หมายถึงความสามารถของโปรแกรมหรือคลาส เช่นคลาสนี้มีฟังก์ชันการทำงานในการตัดคำ

การเขียน method ช่วยให้เราสามารถลดส่วนซ้ำซ้อนของโปรแกรมได้ และง่ายต่อการดูแลจัดการได้ง่าย เพราะการเปลี่ยนแปลงแก้ไขเนื้อหาภายใน method โดยไม่เปลี่ยนวิธีการติดต่อระหว่าง method (method signature) อันได้แก่ ชื่อ method, ลำดับและ type ของ parameter

เรามักจะเปรียบเทียบ method กับ ชิพไอซี เพราะว่าเราไม่จำเป็นต้องรู้ logic ภายในชิพ แค่เรารู้ว่าขาแต่ละขานั่นต้องต่อกับอะไร(เปรียบได้ว่าเราต้องรู้ว่า parameter แต่ละตัวเป็นอะไร มีลำดับยังไง)

C# ต้องสร้าง method ไว้ใน class เท่านั้น (ไม่สามารถเขียนไว้ใน method อื่นได้เหมือน pascal) โครงสร้างของ method มีดังนี้

[<modifier>] [static] <return typed> < method name>([<parameter list>])
      <method body>
modifier :
    public, protected, private, internal
return typed :
    any type(primitive type(int, char,...) or defined type(class ex: string, ...) or no returned type(void)
paremeter list :
    [ref|out] type parametername

โดย modifier แต่ละตัวมีความหมายดังนี้
public : method นี้สามารถถูกอ้างถึงได้จากที่ไหนก็ได้
protected : จะถูกอ้างถึงได้ในคลาสตัวเอง และ คลาสลูก(คลาสที่มีการขยาย หรือสืบทอดมาจากคลาสอื่น)
private : ใช้อ้างได้ภายในคลาสตัวเองเท่านั้น
internal : เข้าได้เฉพาะในโปรแกรมเดียวกันเท่านั้น
protected internal : คือ internal รวมกับ protected อะแหละ

static
method ที่เป็น static จะถูกอ้างถึงได้โดยมีเงื่อนไขดังนี้

method ที่เป็น static(เช่น main) จะสามารถเรียกได้เฉพาะ method ในคลาสเดียวกันที่เป็น static เท่านั้น

method ที่เป็น static จะถูกเรียกจากที่อื่นโดยอ้างผ่านทางชื่อคลาสได้ทันที ซึ่งต่างกับ method ตรงที่ไม่ static ที่ต้องมีการสร้าง instance ก่อน

Method overloading

ภาษา C++, Java อนุญาตให้เราตั้งชื่อ method เหมือนกันได้ โดยที่ว่าจะต้องต่างกันที่ signature(parameter type เรียงลำดับต่างกัน หรือไม่เหมือนกันเลย) เช่น

float Square(int num) {
    ...
}
กับ
float Square(float num) {
    ...
}
ถือว่าเป็นคนละ method กันเพราะ parameter ตัวนึงเป็น int อีกตัวเป็น float(ชื่อ parameter ไม่มีผล)
แต่
int Square(int num) {
    ...
}
กับ
float Square(int num) {
    ...
}
จะถูกมองเป็น method เดียวกัน
static int Square(int n) {
    return n*n;
}

/*
static long Square(int n) {
    return n*n;
}
*/

static double Square(float n) {
    return n*n;
}

static double Square(double n) {
    return n*n;

static void Main() {
    int x = Square(10);
    double y = Square(1.5f);
    double z = Square(1.5);

    Console.WriteLine("x = {0}, y = {1}, z = {2}", x, y, z);
}

ต่อตอนหน้าละกัน

Comment

Comment:

Tweet

ช่วยสอนเขียนอาร์เรย์ด้วยค่ะ

#4 By panadda16 (202.29.39.1 /172.16.2.182) on 2006-07-15 09:14

ต้องตามเก็บซะแล้ว

#3 By uregus on 2005-06-20 10:02

ถ้าพวกผมมีติว C# กัน จะใช้ blog พี่ในการสอนได้ไหมเนี่ย

#2 By ABZee on 2005-06-18 23:44

เหมือนจะพอเข้าใจ (รึเปล่า)
ติดตามตอนต่อไปค่า~ ><

#1 By ♡ BlackCrystal ♡ on 2005-06-18 21:21