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

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

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)  {  Console.WriteLine( “OK”);  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 Program { 2. public static void main( String[ ] args) 3. { 4. Example ex = new Example( ); 5. // ต้องสร้างเป็น Instance ก่อน จึงเรียกเมธอด ผ่านชื่อ instance 6. ex.C( ); 7. Example. D( ); // เรียกผ่านชื่อคลาสได้เลย 8. } 9. } 10. Class Example 11. { 12. public int C( ) { } 13. public static int D ( ) { } 14. } C# Programming with Visual C# 2010 Express7

8 การคืนค่าของเมทธอด  การประกาศเมทธอดเป็นชนิดไม่มี void  เมทธอดชนิดไม่มี void จะต้องมีการคืนค่าเสมอ  การเพิ่มคำสั่งคืนค่าด้วย return C# Programming with Visual C# 2010 Express8 static int TwoPlusTwo( ) { int a,b; a = 2; b = 2; return a + b; }

9 การใช้คำสั่ง Return  Return ทันที  Return แบบมีเงื่อนไข C# Programming with Visual C# 2010 Express9 static void ExampleMethod( ){ Console.WriteLine("Hello"); return; Console.WriteLine("World"); } static void ExampleMethod( ){ int numBeans; //... Console.WriteLine("Hello"); if (numBeans < 10) return; Console.WriteLine("World");

10 การใช้ตัวแปรท้องถิ่น (Local Variable)  ตัวแปรท้องถิ่น  สร้างภายในเมทธอด  เป็นของเมทธอดใช้  หายไปเมื่อเมทธอดจบการทำงาน  ตัวแปรที่ใช้ร่วมกันในเมทธอด  ต้องเป็นตัวแปรระดับสมาชิกของคลาส  ขอบเขตตัวแปรขัดกัน  ตัวแปรท้องถิ่นกับตัวแปรระดับสมาชิกของคลาสที่ใช้ชื่อ เหมือนกัน C# Programming with Visual C# 2010 Express10

11 C# Programming with Visual C# 2010 Express 11

12 การประกาศและเรียกใช้ตัวพารามิเตอร์  การประกาศตัวพารามิเตอร์  วางในวงเล็บหลังชื่อเมทธอด  กำหนดชนิดข้อมูลและชื่อตัวพารามิเตอร์  การเรียกเมทธอดกับตัวพารามิเตอร์  เรียกชื่อและตามด้วยชนิดตัวพารามิเตอร์ให้ครบจำนวน C# Programming with Visual C# 2010 Express12 ตัวอย่างการใช้ static void MethodWithParameters(int n, string y){... } ตัวอย่างการเรียก MethodWithParameters(2, "Hello, world“);

13 เมทธอดโอเวอร์โหลด (overload)  คือเมทธอดที่มีชื่อเหมือนกับภายในคลาส  มีเป้าหมายเพื่อให้ตอบสนองต่างกัน ในชื่อเมธอดเดียวกัน ตามความเหมาะสมที่จะสนับสนันการเรียกใช้งาน เช่น มี ข้อมูลตัวแปรที่ส่งเข้าเมธอด ไม่เหมือนกัน  ความแตกต่างอยู่ที่รายการตัวพารามิเตอร์ของเมทธอด  การเรียกใช้เมทธอด ต้องระบุรายการพารามิเตอร์ให้ตรงกับ ที่นิยามไว้ C# Programming with Visual C# 2010 Express13 static int Add(int a, int b){ return a + b; } static int Add(int a, int b, int c){ return a + b + c; }

14 ลักษณะโอเวอร์โหลดที่ทำได้  Signature เป็นรายการพารามิเตอร์ของเมทธอดที่ต้องไม่มีซ้ำกัน ของการทำโอเวอร์โหลดเมทธอด ดังมีความต่างคือ  ชนิดตัวแปรไม่เหมือนกัน  จำนวนตัวแปรไม่เท่ากัน  ลำดับตัวแปรไม่เหมือนกัน(ดูที่ชนิดตัวแปร)  Signature ไม่รวมชื่อตัวพารามิเตอร์ การคืนค่าของเมทธอด  แต่การคืนค่าต้องเหมือนกัน C# Programming with Visual C# 2010 Express14 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; } }

15 ตัวแปรทางเลือกของเมธอด  การทำโอเวอร์โหลดไม่เพียงพอที่สนับสนุนการทำงานแบบนี้ 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 Express15

16 การสร้างตัวแปรทางเลือก  เราสร้างตัวแปรทางเลือกที่มีการทำโอเวอร์โหลดไปด้วย เราจะใส่ ตัวแปร 2 ตัว หรือ 3 ตัวก็ได้ และสังเกตด้วยว่า เมธอดสุดท้ายมี ตัวแปรเข้า 3 ตัว มีการกำหนดค่าให้ตัวแปรสุดท้าย = 0.0F แต่ ในการทำงานจริงสามารถเปลี่ยนค่าเป็น 10.0F ได้  สำหรับการไม่ใส่ตัวแปรที่ 3 เมธอดนี้จะกำหนดค่าปริยายให้ โดย สามารถใส่เงื่อนไขได้  ต้องให้ตัวแปรทางเลือกอยู่ในลำดับสุดท้ายเท่านั้น C# Programming with Visual C# 2010 Express16 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}

17 การเรียกเมธอดด้วยการระบุชื่อตัวแปร  นอกจากการใส่ตัวแปร และชนิดตัวแปรตามลำดับของการ กำหนดเมธอดแล้ว ซีชาร์ป ยังยืดหยุ่นได้อีก ด้วยการใส่ตัว แปร และชนิดตัวแปร ไม่ต้องตามลำดับได้ ด้วยการกำหนด ชื่อตัวแปรเข้าในการเรียกใช้งาน ดังตัวอย่างต่อไปนี้ C# Programming with Visual C# 2010 Express17 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. }

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

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

20 ตัวอย่างการใช้ตัวแปร 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 Express20

21 ตัวอย่างการใช้ตัวแปรเข้าแบบอ้างอิง 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 Express21

22 ตัวอย่างการใช้ตัวแปร 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 Express22

23 การใช้ตัวแปรเข้าแบบไดนามิกด้วยอะเรย์  ในบางครั้งเมื่อต้องการให้ตัวแปรเข้า หลายตัว การใช้เมธ อดโอเวอร์โหลด จำนวนที่มีตัวเข้าต่างๆ จะทำให้มีเมธอดโอ เวอร์โหลดจำนวนมาก เกินไป  การแก้ปัญหานี้แก้ได้ด้วยการทำ ให้มีตัวแปรเข้าแบบไดนา มิก ใช้คีย์เวิร์ด params  ประกาศเป็นอาร์เรย์ ส่งผ่านบบ การส่งตัวพารามิเตอร์เข้า C# Programming with Visual C# 2010 Express23 static long AddList(params long[ ] v){ long total, i; for (i = 0, total = 0; i < v.Length; i++) total += v[i]; return total; } static void Main( ){ long x = AddList(63,21,84); }

24 C# Programming with Visual C# 2010 Express24

25 เงื่อนไขการใช้ตัวแปรเข้าแบบไดนามิก  มีเพียงหนึ่ง params ต่อหนึ่งเมธอด  วางได้ที่ตำแหน่งท้ายสุดของตัวแปร  มีเพียงอะเรย์หนึ่งมิติเท่านั้น C# Programming with Visual C# 2010 Express25 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.}

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

27 การใช้เมทธอดเรียกตัวเอง (Recursive)  เมทธอดที่เรียกตัวเอง  โดยตรง  โดยอ้อม  มีประโยชน์กับโครงสร้างปัญหาที่ซับซ้อน C# Programming with Visual C# 2010 Express27 static ulong Fibonacci(ulong n){ if (n <= 2) return 1; else return Fibonacci(n-1) + Fibonacci(n-2); }

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

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

30 คำถามทบทวน 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 Express30

31 Lab การสร้างและใช้งานเมทธอด 1. การใช้พารามิเตอร์ในเมทธอดที่ส่งค่าคือ 2. การสร้างเมทธอดกับพารามิเตอร์อ้างอิง 3. การใช้เมทธอด รีเคอร์ชั่น C# Programming with Visual C# 2010 Express31

32 C# Programming with Visual C# 2010 Express32


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

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


Ads by Google