งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

Visual C# 2010 Express 6. Method เมธอดคือหน้าที่การงานของวัตถุให้ เรียกใช้ 1C# Programming with Visual C# 2010 Express.

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "Visual C# 2010 Express 6. Method เมธอดคือหน้าที่การงานของวัตถุให้ เรียกใช้ 1C# Programming with Visual C# 2010 Express."— ใบสำเนางานนำเสนอ:

1 Visual C# 2010 Express 6. Method เมธอดคือหน้าที่การงานของวัตถุให้ เรียกใช้ 1C# Programming with Visual C# 2010 Express

2 เป้าหมายการเรียนรู้  การนิยามเมทธอด ทั้งสเตติก และอินสแตทซ์เมทธอด  เมทธอดโอเวอร์โหลด  การใช้ตัวแปรเข้าแบบไดนามิกด้วยอะเรย์  ตัวแปรทางเลือกของเมทธอด  การเรียกเมทธอดด้วยการระบุชื่อตัวแปร  การสร้างเมทธอดอัตโนมัติ  กลไกการส่งตัวแปร  แนวทางการใช้ตัวแปร  การให้เมทธอดเรียกใช้ตัวเอง 2C# Programming with Visual C# 2010 Express

3 อะไรคือเมธอด เมทธอดคือกลุ่มของคำสั่ง ภาษาสมัยใหม่ทุกตัวใช้ แนวคิดเดียวกันนี้ เราอาจคิดเปรียบเทียบได้ว่า เมทธอดก็คือ  Function,  Subroutine,  Procedure,  Subprogram เราจะสังเกตได้ง่ายๆ ว่าอะไรเป็นเมทธอด เมทธอดจะมี เครื่องหมาย วงเล็บ “( )” ต่อท้ายชื่อเมทธอด C# Programming with Visual C# 2010 Express3

4 เมธอด Main( )  class Program  {  static void Main(string[] args)  {  CheckEmpty();  }  private static void CheckEmpty()  { }  } สังเกตไหม เมธอด ทำไมต้องเป็น static ด้วย ศึกษาต่อไป ก็จะตอบคำถามนี้ได้ C# Programming with Visual C# 2010 Express4

5 การนิยามเมทธอด  การตั้งชื่อ ชื่อไม่ควรเริ่มต้นด้วย ขีดล่าง ควรใช้อักษรพิมพ์ ใหญ่นำหน้า และควรเป็นคำกริยา  การใช้ตัวแปรเข้า จำนวนตัวแปรมีเท่าไหร่ก็ได้ ตัวแปรเข้า แต่ละตัวจะกำหนดชนิดข้อมูลของตัวแปรเข้าด้วย และจะไม่ มีตัวแปรเข้าเลยก็ได้  ทุกคำสั่งภายในเมธอด จะต้องอยู่ภายในเครื่องหมายปีกกา ถึงแม้จะคำสั่งเดียวก็ตาม  เมธอดที่มีการคืนค่า ระบุชนิดข้อมูลการคืนค่าก่อนชื่อเมทธ อด และการคืนค่าเป็นชนิดข้อมูลอะไรจะต้องมีคำสั่ง return ภายในส่วนเมธอด  เมธอดใดไม่คืนค่าชนิดข้อมูลอะไร ให้ใช้การคืนค่าเป็น void C# Programming with Visual C# 2010 Express5

6 การเรียกใช้เมธอด  การเรียกเมธอด ทำได้โดยการเรียกชื่อเมธอดแล้วตามด้วย ตัวแปรเข้าให้ตรงกับที่ได้นิยามไว้ หรือไม่ต้องมีตัวแปรเข้า ในกรณีที่ไม่ได้นิยามตัวแปรเข้าไว้ แต่ยังคงต้องมีวงเล็บว่าง ไว้ ดังนั้นแล้วจะต้องมีวงเล็บเสมอ  การเรียกเมธอดจากคลาสอื่น  กรณี ไม่เป็น static method ทำได้โดยการเรียกชื่อคลาส แล้วตามด้วยชื่อเมธอดที่ต้องการของคลาสนั้น  กรณี ไม่เป็น static method ทำได้โดยการเรียกชื่อ instance แล้วตามด้วยชื่อเม่ธอด C# Programming with Visual C# 2010 Express6

7 การเรียกเมธอดจากต่างคลาส 1. class A { 2. static void Main(string[] args) { 3. B.Method_b1( ); // static method เรียก static method ด้วยกันได้ 4. B b = new B( ); // static method เรียก non static method ต้องสร้างเป็น object ก่อน 5. b.Method_b2( ); 6. } 7. } 8. class B { 9. public static void Method_b1( ) { 10. Console.WriteLine("This is Method_b1 in class B"); 11. } 12. public void Method_b2( ) { 13. Console.WriteLine("This is Method_b2 in class B"); 14. } 15. } C# Programming with Visual C# 2010 Express7

8 เมธอดโอเวอร์โหลด (Overload Method)  หมายถึงภายในคลาสเดียวกัน มีชื่อเมธอดเหมือนกันได้ แต่ มี Signature ต่างกัน ซึ่งหมายถึง มีตัวแปรเข้า ออก ไปไม่ เหมือนกัน  มีเป้าหมายเพื่อให้ตอบสนองต่างกัน ในชื่อเมธอดเดียวกัน ตามความเหมาะสมที่จะสนับสนันการเรียกใช้งาน เช่น มี ข้อมูลตัวแปรที่ส่งเข้าเมธอด ไม่เหมือนกัน  ตัวอย่างเช่น เมธอด WriteLine( ) มีการทำโอเวอร์โหลดได้ ถึง 19 แบบ เพื่อรองรับการเขียนข้อมูล บนคอนโซล ที่ สามารถรองรับชนิดข้อมูลเข้าแบบต่างๆ C# Programming with Visual C# 2010 Express8 int x = 100; string s = “word”; Console.WriteLine(x); Console.WriteLine(s);

9 ลักษณะโอเวอร์โหลดที่ทำได้  ชนิดตัวแปรไม่เหมือนกัน  จำนวนตัวแปรไม่เท่ากัน  ลำดับตัวแปรไม่เหมือนกัน(ดูที่ชนิดตัวแปร)  การคืนค่าต้องเหมือนกัน C# Programming with Visual C# 2010 Express9 class Customer { private int id; public void SetId(int value) { id = value; } public void SetId(string value) { if (! int.TryParse(value, out id)) { Console.WriteLine("failed:Must be integer value."); } public int GetId() { return id; } }

10 การใช้ตัวแปรเข้าแบบไดนามิกด้วยอะเรย์  ในบางครั้งเมื่อต้องการให้ตัวแปรเข้า หลายตัว การใช้เมธ อดโอเวอร์โหลด จำนวนที่มีตัวเข้าต่างๆ จะทำให้มีเมธอดโอ เวอร์โหลดจำนวนมาก เกินไป  การแก้ปัญหานี้แก้ได้ด้วยการทำ ให้มีตัวแปรเข้าแบบไดนา มิก  คีย์เวิร์ดที่ใช้ทำเพื่อการนี้คือ params C# Programming with Visual C# 2010 Express10 1. public static int Accumulate(params int[ ] value) 2. { 3. int sum= 0; 4. foreach (var item in value) { sum += item; } 5. return sum; 6. }

11 เงื่อนไขการใช้ตัวแปรเข้าแบบไดนามิก  มีเพียงหนึ่ง params ต่อหนึ่งเมธอด  วางได้ที่ตำแหน่งท้ายสุดของตัวแปร  มีเพียงอะเรย์หนึ่งมิติเท่านั้น C# Programming with Visual C# 2010 Express11 1.static void Main(string[] args) { 2.Console.WriteLine(Accumulate("total:", 1, 2, 3, 4)); 3.//print total:10 4.Console.ReadKey(); 5.} 6.public static string Accumulate(string print, params int[] value ) { 7.int sum = 0; 8.foreach (var item in value) { sum += item; } 9.return print + Convert.ToString(sum); 10.}

12 ตัวแปรทางเลือกของเมธอด  การทำโอเวอร์โหลดไม่เพียงพอที่สนับสนุนการทำงานแบบนี้ void OptionalPara(int x1, float x2) { ทำงานอย่างแบบ1} void OptionalPara(int x1, int x2, float x3) { ทำงานอย่างแบบ2} void OptionalPara(int x1, float x3) // ทำไม่ได้ { ทำงานอย่างแบบ3}  ซีชาร์ปสนับสนุนการใช้เป็นแปรที่ให้เลือกให้ใส่ได้ ไม่ใส่ก็ ได้ (ที่เรียกชื่อว่าทางเลือกมาจากคำว่า Option) แต่ยังคง ทำงานได้ C# Programming with Visual C# 2010 Express12

13 การสร้างตัวแปรทางเลือก  เราสร้างตัวแปรทางเลือกที่มีการทำโอเวอร์โหลดไปด้วย เราจะใส่ ตัวแปร 2 ตัว หรือ 3 ตัวก็ได้ และสังเกตด้วยว่า เมธอดสุดท้ายมี ตัวแปรเข้า 3 ตัว มีการกำหนดค่าให้ตัวแปรสุดท้าย = 0.0F แต่ ในการทำงานจริงสามารถเปลี่ยนค่าเป็น 10.0F ได้  สำหรับการไม่ใส่ตัวแปรที่ 3 เมธอดนี้จะกำหนดค่าปริยายให้ โดย สามารถใส่เงื่อนไขได้  ต้องให้ตัวแปรทางเลือกอยู่ในลำดับสุดท้ายเท่านั้น C# Programming with Visual C# 2010 Express13 1.void OptionalPara(int x1, float x2) 2.{ ทำงานอย่างแบบ 1} 3.void OptionalPara(int x1, int x2, float x3) 4. { ทำงานอย่างแบบ 2} 5.void OptionalPara(int x1, float x2, float x3 = 0.0F) 6. { ทำงานอย่างแบบ 3}

14 การเรียกเมธอดด้วยการระบุชื่อตัวแปร  นอกจากการใส่ตัวแปร และชนิดตัวแปรตามลำดับของการ กำหนดเมธอดแล้ว ซีชาร์ป ยังยืดหยุ่นได้อีก ด้วยการใส่ตัว แปร และชนิดตัวแปร ไม่ต้องตามลำดับได้ ด้วยการกำหนด ชื่อตัวแปรเข้าในการเรียกใช้งาน ดังตัวอย่างต่อไปนี้ C# Programming with Visual C# 2010 Express14 1. static void Main(string[] args) 2. { 3. OptionalPara(x1: 1, x3: 10.0F, x2:2.0F); 4. Console.ReadKey(); 5. } 6. static void OptionalPara(int x1, float x2, float x3 = 0.0F) 7. { 8. Console.WriteLine("Optional3Para"); 9. Console.WriteLine("x1:{0}", x1); 10. Console.WriteLine("x2:{0}", x2); 11. if (x3!=0.0) 12. Console.WriteLine("x3:{0}", x3); 13. }

15 การสร้างเมธอดอัตโนมัติ (Refactoring Code) C# Programming with Visual C# 2010 Express15 การใช้ Refactor เพื่อสร้างเมธอดอัตโนมัติ ทำ ให้การเขียนโปรแกรมสะดวก และทำให้การดูแล รักษา ปรับแต่งโปรแกรมง่ายขึ้น

16 กลไกการส่งตัวแปร  รูปแบบการส่งผ่านตัวแปรมีอยู่สามแบบคือ 1. การส่งตัวแปรเข้า (By Value) การส่งแบบนี้บางทีก็เรียก in ซึ่ง เป็นค่าปริยาย (ไม่ใส่คำว่า in) ตัวแปรนี้จะทำสำเนาตัวแปรเข้า มา จะมีผลเฉพาะตัวแปรภายในเมธอดเท่านั้น ส่วนใหญ่การใน การเขียนโปรแกรมจะใช้การส่งตัวแปรเข้าแบบนี้ ซึ่งที่ผ่านมา เราก็ใช้แบบนี้ทั้งหมด 2. การส่งตัวแปรโดยการอ้างอิง (By Reference) การส่งแบบนี้ ไม่มีการทำสำเนาตัวแปรตันทางแต่จะใช้การอ้างอิงแทน ดังนี้ การเปลี่ยนแปลงตัวแปรนี้จึงมีผลต่อตัวแปรต้นทาง หรือเรียกว่า มี in และ out 3. การส่งตัวแปรออก หรือเรียกว่า out เพราะตัวแปรนี้ มีผลต่อตัว แปรภายนอก แต่ไม่มีผลต่อตัวแปร ภายในเมธอด C# Programming with Visual C# 2010 Express16

17 ตัวอย่างการใช้ตัวแปร By Value 1. static void AddOne(int x) 2. { 3. x++; // Increment x 4. } 5. static void Main( ) 6. { 7. int k = 6; 8. AddOne(k); 9. Console.WriteLine(k); // Display the value 6, not } C# Programming with Visual C# 2010 Express17

18 ตัวอย่างการใช้ตัวแปรเข้าแบบอ้างอิง 1. static void Main(string[] args){ 2. int i = 6; int j = 6; 3. AddRefOneValueOne(ref i, j); 4. Console.WriteLine("{0}, {1}", i,j); 5. // Display the value 7, 6 6. Console.ReadKey(); 7. } 8. static void AddRefOneValueOne(ref int x, int y){ 9. x++; 10. y++; 11. } C# Programming with Visual C# 2010 Express18

19 ตัวอย่างการใช้ตัวแปร out 1. static void OutMethod(out int p){ 2. p = 1; 3. } 4. static void Main(string[] args){ 5. int p = 2; 6. OutMethod(out p); 7. Console.WriteLine(p);// Display 1 8. Console.Read(); 9. } C# Programming with Visual C# 2010 Express19

20 แนวทางการใช้ตัวแปรของเมธอด  กลไกการทำงาน Pass by value เป็นวิธีที่นิยมใช้มากที่สุด เพราะการเปลี่ยนแปลงใดเกิดขึ้นภายในเมธอดเท่านั้น  หากว่าต้องการจะส่งตัวแปรออกออกนอกเมธอด มีอยู่สองวิธี คือการใช้ return และ ref เป็นคีย์เวิร์ด ต่างกันที่ return จะ ใช้กับการส่งตัวแปรออกเพียงตัวเดียว แต่ ref ส่งตัวแปรออก ได้หลายตัวได้  และมีการเปลี่ยนแปลงเกิดขึ้นสองทาง ในกรณีที่ต้องการเกิด การเปลี่ยนเฉพาะทางออกเท่านั้นก็ให้ใช้ out เป็นคีย์เวิร์ด กับตัวแปรเข้าของเมธอด  ประสิทธิภาพการทำงาน ชนิดตัวแปรที่ทำงานได้เร็วคือ int, long มีประสิทธิภาพที่สุด และต้องใช้กับ pass by value C# Programming with Visual C# 2010 Express20

21 การใช้เมธอดเรียกตัวเอง (Recursive) 1. static void Main(string[ args) { 2. for (ulong i = 1; i < 10; i++) 3. Console.WriteLine(i + ":" + Fibonacci(i)); 4. Console.ReadKey(); 5. } 6. static ulong Fibonacci(ulong n) { 7. if (n <= 2) 8. return 1; 9. else 10. return Fibonacci(n - 1) + Fibonacci(n - 2); 11. } //จะขียนลำดับเลขชุดนี้คือ 1, 1, 2, 3, 5, 8, 13, 21, 34 C# Programming with Visual C# 2010 Express21

22 สรุปท้ายบท บทนี้เราได้เรียนรู้การสร้างเมธอด การใช้งานเมธอด การทำโอเวอร์โหลด กฎเกณฑ์ การสร้างเมธอดในลักษณะ ต่างๆ โดยเฉพาะเรื่อง การสร้างตัวแปรเข้า หรือพารามิเตอร์ ในลักษณะ ไดนามิกของอะเรย์ ไดนามิกของทางเลือก การ ระบุชื่อตัวแปร ในกรณีที่ไม่เรียงลำดับตัวแปรเข้า กลไกการ ทำงานของตัวแปรเข้า แบบทำสำเนาเข้า แบบอ้างอิงตัแปรเข้า และแบบอ้างอิงภายนอกอย่างเดียว รวมทั้งเมธอดเรียกตัวเอง สำหรับโครงสร้างปัญหาที่ซับซ้อน C# Programming with Visual C# 2010 Express22

23 คำถามทบทวน 1. เมธอดอาจเรียกได้หลายชื่อ ชื่อเหล่านั้นคืออะไรได้บ้าง 2. มีเหตุผลอะไรที่ต้องสร้างสเตติกเมธอด และอินสแตทซ์เมธอด 3. มีเหตุผลอะไรที่จะต้องทำโอเวอร์โหลดเมธอด 4. ให้เขียนรายการลักษณะตัวแปรเข้าที่ทำโอเวอร์โหลดได้บ้าง 5. ใช้คีย์เวิร์ดอะไรในการสร้างตัวแปรเข้าแบบไดนามิก ด้วยอะเรย์ 6. มีเหตุผลอะไรที่ซีชาร์ปต้องสร้างตัวแปรทางเลือก 7. ในกรณีที่ใช้การะบุชื่อตัวแปรเข้าทุกตัว ยกเว้นตัวแปร ทางเลือก ในการเรียกใช้งานเมธอดที่ตัวแปรทางเลือก ค่าตัว แปรทางเลือกจะมีค่าเป็นอะไร 8. มีขั้นตอนอะไรบ้างในการสร้างเมธอดอัตโนมัติ C# Programming with Visual C# 2010 Express23

24 คำถามทบทวน 9. จากโค้ดต่อไปนี้ เมื่อเรียกเมธอด OutMethod( ) จะเกิดอะไรขึ้น static void OutMethod(out int p){ p = 1;} static void Main(string[] args){ int p; OutMethod(out 1); Console.WriteLine(p); Console.Read(); } 10. ชนิดตัวแปรเข้ามีกี่ชนิด จำแนกตามกลไกการส่งตัวแปร 11. ประสิทธิภาพในการใช้ตัวแปรโดยทั่วไป ใช้ชนิดข้อมูลของตัว แปรเข้าเป็นอะไรจะดีที่สุด 12. เมธอดเรียกตัวเอง หรือรีเคอร์ซีพ จำเป็นต้องมีการจุดหยุดของ การทำงานหรือไม่ และเพราะอะไร C# Programming with Visual C# 2010 Express24


ดาวน์โหลด ppt Visual C# 2010 Express 6. Method เมธอดคือหน้าที่การงานของวัตถุให้ เรียกใช้ 1C# Programming with Visual C# 2010 Express.

งานนำเสนอที่คล้ายกัน


Ads by Google