Overloading of Indexers
พัชราพร ภายไธสง 650710836
Overloading of Indexers คือการที่เราสามารถสร้างหลายๆ Indexers ใน Class เดียวกันได้ ประกาศ Paramiter ได้หลายตัว และ Paramiter แต่ละตัวจะมีชนิดข้อมูลที่แตกต่างกัน Indexers จะโอเวอร์โหลดได้โดยการส่ง Paramiter 2 ประเภทที่แตกต่างกัน ซึ่งทำให้สามารถเข้าถึงข้อมูลภายใน Class ได้หลากวิธี ซึ่งจะคล้ายกับการ method overloading หรือฟังก์ชัน ที่มีการสร้างเมดธอดหรือฟังก์ชันหลายๆตัวใน Class เดียวกัน มีชื่อเดียวกัน แต่มี Paramiter ที่แตกต่างกัน
ถึงแม้จะบอกว่าคล้ายกัน แต่แน่นอนว่าต้องมีข้อแตกต่าง ซึ่งนั้นก็คือ แตกต่างตรงการใช้งาน Overloading of Indexers มีไว้เข้าถึงสมาชิกของClass ทำให้สามารถเข้าถึงสมาชิกในClassได้หลายวิธี แต่การ method overloading ไม่ได้มีไว้เพื่อเข้าถึงสมาชิกของคลาสโดยตรง ส่วนใช้จะเน้นไปที่การดำเนินการอะไรบางอย่าง อย่างการสร้างฟังก์ชัน
Sysntax
Exemple 1
overload ของ indexers ด้วย int
และ double
อธิบายตัวอย่างที่ 1
ในคลาส
Dessert
มีการ Overload Indexers เพื่อให้สามารถเข้าถึงข้อมูลด้วย Paramiter ที่แตกต่างกัน คือint
และdouble
ในClass Main มีการสร้าง collection เป็นอ็อบเจกต์ ของคลาสDessert ใช้ Indexer รับค่าจำนวนเต็ม พร้อมกำหนดชื่อ จะเข้าถึง indexer ที่รับพารามิเตอร์เป็นint แล้วsetค่าลงListDessert ใช้ Indexer รับค่าจำนวนทศนิยม พร้อมกำหนดชื่อ จะเข้าถึง indexer ที่รับพารามิเตอร์เป็นdouble แล้วsetค่าลงListDessert ต่อมาเข้าถึงข้อมูลของ Class Dessert โดยใช้ indexer ทั้งสองประเภทคือ intและ double แล้ว get ข้อมูลออกมาConsole.WriteLine(collection[1.0]+" "+collection[0]);
Exemple 2
overload ของ indexers ด้วย int
และ String
อธิบายตัวอย่างที่2
ในคลาส
Dessert
มีการ Overload Indexers เพื่อให้สามารถเข้าถึงข้อมูลด้วย Paramiter ที่แตกต่างกัน คือint
และString
หลักการทำงานเหมือนกับตัวอย่างที่1 ต่างแค่การเข้าถึงข้อมูลจะใช้ Indexer รับค่าจำนวนเต็มหรือชื่อ และในCodeตัวอย่างนี้ ไม่มีการใช้set
ในIndexer ที่รับParameter เป็นString มีแค่การใช้get
อย่างเดียว โดยการนำ Parameter ที่ถูกส่งมาจาก Main วนลูปดูว่ามีข้อมูลอยู่ใน array ListDessert ไหม แล้ว return ออกมาว่ามีหรือไม่มี
เปรียบเทียบOverloading of Indexers กับ Java, C, Python
1.ภาษา Java
ใน java ไม่มีคำสั่ง Overloading of Indexers เหมือนในภาษา C# ที่สามารถเข้าถึงและแก้ไขค่าของสมาชิกใน class ได้โดยตรง แต่มีการสร้าง Method getter และ Method setter ที่สามารถนำมาใช้แทนกันได้เพื่อให้มีหน้าที่การทำงานคล้ายกับ indexer
2.ภาษา Python
ใน Python ก็จะมีแนวคิดคล้ายกับJava สร้าง property และ dunder methods แทน เพื่อเข้าถึงและแก้ไขค่าของสมาชิก ภายใน class
3.ภาษา C
ใน C เช่นกัน ไม่มีคำสั่ง Overloading of Indexers แต่สามารถสร้างฟังก์ชันและการใช้pointerแทนได้ เพื่อให้สามารถเข้าถึงข้อมูลในอาร์เรย์ได้เหมือนการใช้งาน indexer
อธิบายเพิ่มเติม
มีการสร้างฟังก์ชัน
getDessert
รับ array ของ desserts และ index แล้วคืนค่าชื่อ ที่ตำแหน่งindex และsetDessert
รับ array ของ desserts และ index แล้วบันทึกชื่อ ที่ตำแหน่งindex
Out put
Slide
Reference
ใช้ศึกษาการทำงานของ Overloading of Indexers
ใช้ศึกษา Indexers
ใช้ศึกษาเรื่องPointers ในภาษา C เพื่อนำมาใช้แทน Overloading of Indexers ในภาษา C#
ใช้เพื่อศึกษา Method เพื่อหาความแตกต่างกับ Indexers
ใช้ศึกษา getter และsetter ในภาษา java
ศึกษาเรื่อง properpy และdunder methods ในpython
ใช้ศึกษาการสร้างฟังก์ชันในภาษา C
Last updated