-
การรวบรวมกระบวนการใช้งานตัวสร้างดัชนีใน C#
สิ่งที่น่าสนใจที่สุดประการหนึ่งของภาษา C# คือตัวสร้างดัชนีคลาส พูดง่ายๆ ก็คือสิ่งที่เรียกว่าตัวทำดัชนีคือแอตทริบิวต์ชนิดพิเศษที่คุณสามารถอ้างอิงคลาสของคุณเองได้เหมือนกับอาร์เรย์ แน่นอนว่าคุณสมบัตินี้มีประโยชน์อย่างยิ่งเมื่อสร้างคลาสคอลเลกชัน แต่ในสถานการณ์อื่น ๆ เช่น การประมวลผลไฟล์ขนาดใหญ่หรือการแยกทรัพยากรที่จำกัด แน่นอนว่าพฤติกรรมที่คล้ายกับอาร์เรย์ในคลาสก็มีประโยชน์มากเช่นกัน บทความนี้จะแนะนำคุณตลอดการตั้งค่าคลาสเพื่อใช้ตัวสร้างดัชนี แต่ก่อนอื่น เรามาร่างแนวคิดเกี่ยวกับคุณสมบัติเพื่อเป็นข้อมูลพื้นฐานที่จำเป็นกันก่อน
คุณสมบัติ หากคุณเคยเขียนโปรแกรมใน VB6 คุณควรคุ้นเคยกับวิธีการคุณสมบัติที่เรียกว่าจริง ๆ แล้วเป็นสมาชิกคลาสพิเศษที่ใช้การควบคุมการเข้าถึงฟิลด์คลาสส่วนตัว มีสองวิธีแอตทริบิวต์ในภาษา C# วิธีหนึ่งคือรับซึ่งสามารถส่งคืนค่าของฟิลด์ส่วนตัวได้และวิธีที่สองตั้งค่าไว้ซึ่งสามารถตั้งค่าของฟิลด์ส่วนตัวได้ ตัวอย่างเช่น ใช้โค้ดต่อไปนี้เป็นตัวอย่าง คุณสมบัติ FirstName จะถูกสร้างขึ้นเพื่อควบคุมการเข้าถึงชื่อสมาชิกคลาสส่วนตัว:
บุคคลในชั้นเรียน {
ชื่อสตริงส่วนตัว
สตริงสาธารณะชื่อ {
รับ {ชื่อกลับ;}
ตั้งค่า {ชื่อ = ค่า;}
-
-
การประกาศทรัพย์สินสามารถเข้ารหัสได้ดังนี้:
บุคคล p = บุคคลใหม่ ();
p.FirstName = "มอนต์";
Console.WriteLine (p.FirstName);
อย่างที่คุณเห็นการประกาศแอตทริบิวต์นั้นเหมือนกับการประกาศโดเมนมากกว่ายกเว้นว่าจะประกาศสมาชิกพิเศษสองคนด้วยซึ่งตามที่ Microsoft เรียกว่าผู้เข้าถึง ฟังก์ชัน get access จะถูกเรียกเมื่อมีการเรียกคุณสมบัติทางด้านขวาของนิพจน์ หรือเมื่อคุณสมบัติถูกใช้เป็นพารามิเตอร์ของรูทีนย่อย (หรือฟังก์ชัน) อื่น ในทางกลับกัน ฟังก์ชัน set access จะถูกเรียกใช้เมื่อมีการเรียกใช้คุณสมบัติทางด้านซ้ายของนิพจน์ และค่าฟิลด์ส่วนตัวถูกตั้งค่าโดยการส่งผ่านพารามิเตอร์ value โดยปริยาย คุณสามารถสร้างคุณสมบัติแบบอ่านอย่างเดียวได้โดยละเว้นฟังก์ชัน set accessor เพื่อให้ความพยายามในการตั้งค่าคุณสมบัติจะทำให้เกิดข้อผิดพลาดในการคอมไพล์
ประโยชน์ของการใช้ตัวทำดัชนี
ด้านล่างเป็นโครงสร้างของมัน
<ตัวแก้ไข> <ประเภทการคืนสินค้า> นี้ [รายการอาร์กิวเมนต์]
-
รับ
-
// รับรหัสไปที่นี่
-
ชุด
-
// ตั้งรหัสอยู่ที่นี่
-
-
บันทึก:
ตัวแก้ไข: ตัวแก้ไข เช่น ส่วนตัว สาธารณะ ได้รับการป้องกัน หรือภายใน
นี่: นี่คือคีย์เวิร์ดพิเศษใน C# ซึ่งแสดงถึงอินสแตนซ์ปัจจุบันของคลาสอ้างอิง ในที่นี้หมายถึงดัชนีของคลาสปัจจุบัน
รายการอาร์กิวเมนต์: นี่หมายถึงพารามิเตอร์ของตัวสร้างดัชนี
คุยกันอยู่นานก็กลับเข้าประเด็นแล้วทำไมต้องวนเวียนอยู่ในวงกลมนี้ล่ะ? อันที่จริง นี่เป็นเพราะว่าตัวสร้างดัชนีของคลาสนั้นเหมือนกับคุณสมบัติอย่างมาก และนี่ก็เป็นกรณีนี้จากมุมมองของโค้ดด้วย นี่คือตัวอย่างของคลาสที่มีตัวสร้างดัชนีที่ส่งคืนสตริง:
ตัวอย่างคลาส {
สตริงสาธารณะนี้ [ดัชนี int] {
รับ {return "คุณผ่าน" + ดัชนี }
-
-
โปรดทราบว่าชื่อแอตทริบิวต์ที่นี่คือสิ่งนี้ ซึ่งอ้างอิงกลับไปยังอินสแตนซ์ปัจจุบันของคลาส และรายการพารามิเตอร์จะอยู่ในวงเล็บเหลี่ยมแทนวงเล็บ นอกจากนี้ นี่คือตัวสร้างดัชนีแบบอ่านอย่างเดียว เพื่อเปลี่ยนเป็นประเภทอ่าน/เขียน ฉันได้เพิ่มฟังก์ชันการเข้าถึงการตั้งค่า เมื่อกำหนดตัวสร้างดัชนี คุณไม่จำเป็นต้องใช้เพียงพารามิเตอร์เดียว พารามิเตอร์ตัวสร้างดัชนีสามารถเป็นประเภทใดก็ได้ แต่ int มักจะเป็นประเภทที่เหมาะสมที่สุด นอกจากนี้ยังเป็นไปได้ที่จะมีตัวสร้างดัชนีมากกว่าหนึ่งตัว (โอเวอร์โหลด) ในคลาสเดียวกัน
หลังจากกำหนดคลาสตัวอย่างข้างต้นแล้ว เราสามารถใช้ตัวสร้างดัชนีเป็นแอตทริบิวต์เริ่มต้นได้ ดังที่แสดงด้านล่าง:
ตัวอย่าง s = ตัวอย่างใหม่ ();
Console.WriteLine (s [55]);
คุณสมบัติและตัวทำดัชนี มีความแตกต่างหลายประการระหว่างคุณสมบัติและตัวทำดัชนี:
แต่ละแอตทริบิวต์ของคลาสจะต้องมีชื่อที่ไม่ซ้ำกัน และตัวสร้างดัชนีแต่ละตัวที่กำหนดไว้ในคลาสจะต้องมีลายเซ็นหรือรายการพารามิเตอร์ที่ไม่ซ้ำกัน (เพื่อให้สามารถใช้งานตัวสร้างดัชนีมากเกินไปได้)
คุณสมบัติสามารถเป็นแบบคงที่ได้และผู้จัดทำดัชนีจะต้องเป็นสมาชิกอินสแตนซ์
ฟังก์ชันการเข้าถึงที่กำหนดไว้สำหรับผู้จัดทำดัชนีสามารถเข้าถึงพารามิเตอร์ที่ส่งไปยังตัวสร้างดัชนี ในขณะที่ฟังก์ชันการเข้าถึงคุณสมบัติไม่มีพารามิเตอร์
ลักษณะการทำงานที่เหมือนอาร์เรย์ของอินเทอร์เฟซมักได้รับการสนับสนุนโดยผู้ใช้งานโปรแกรม ดังนั้นคุณจึงสามารถกำหนดตัวสร้างดัชนีสำหรับอินเทอร์เฟซได้ ทั้งอินเทอร์เฟซคอลเลกชัน IList และ IDictionary จะประกาศตัวสร้างดัชนีให้เข้าถึงรายการที่เก็บไว้
เมื่อประกาศตัวสร้างดัชนีสำหรับอินเทอร์เฟซ โปรดจำไว้ว่าการประกาศนั้นบ่งชี้ถึงการมีอยู่ของตัวสร้างดัชนีเท่านั้น คุณจะต้องจัดเตรียมฟังก์ชันการเข้าถึงที่เหมาะสมเท่านั้น โดยไม่รวมตัวแก้ไขขอบเขต รหัสต่อไปนี้ประกาศตัวสร้างดัชนีเป็นส่วนหนึ่งของอินเทอร์เฟซ IImplementMe:
อินเทอร์เฟซ IIimplementMe {
สตริงนี้ [ดัชนี int]
-
รับ;
ชุด;
-
คลาสที่นำไปใช้งานที่เกี่ยวข้องจะต้องกำหนดฟังก์ชันรับและตั้งค่าการเข้าถึงสำหรับตัวสร้างดัชนีของ IimplementMe โดยเฉพาะ
นั่นเป็นภาพรวมพื้นฐานของตัวสร้างดัชนี ตอนนี้คุณควรมีความเข้าใจที่ดีขึ้นเกี่ยวกับบทบาทของตัวทำดัชนีในการพัฒนาของคุณ
คลาส SampleCollection<T>
-
ส่วนตัว T[] arr = ใหม่ T[100];
สาธารณะ T นี้ [int i]
-
รับ
-
กลับ arr[i];
-
ชุด
-
arr[i] = ค่า;
-
-
-
// คลาสนี้แสดงวิธีที่โค้ดไคลเอ็นต์ใช้ตัวสร้างดัชนี
โปรแกรมชั้นเรียน
-
โมฆะคงที่หลัก (สตริง [] args)
-
SampleCollection<string> stringCollection = ใหม่ SampleCollection<string>();
stringCollection[0] = "สวัสดีชาวโลก";
System.Console.WriteLine (stringCollection [0]);
-
-
บทความนี้มาจากบล็อก CSDN โปรดระบุแหล่งที่มาเมื่อพิมพ์ซ้ำ: http://blog.csdn.net/licheng19891020/archive/2009/12/09/4974516.aspx
-