C# Tutorial ตอนที่ 7 (method ตอนที่ 1)
posted on 18 Jun 2005 18:20 by tidno1 in csharp-and-dotnetMethod
โดยทั่วไปแล้วเกือบทุกภาษาจะมีการทำงานที่แบบ 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 มีดังนี้
<method body>
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 เรียงลำดับต่างกัน หรือไม่เหมือนกันเลย) เช่น
...
}
...
}
แต่
...
}
...
}
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);
}
ต่อตอนหน้าละกัน

ติดตามตอนต่อไปค่า~ ><
#1 By ♡ BlackCrystal ♡ on 2005-06-18 21:21