C # ทำดัชนี (ดัชนี)
ดัชนี (ดัชนี) ช่วยให้วัตถุเช่นอาร์เรย์สามารถจัดทำดัชนีเมื่อคุณกำหนดทำดัชนีสำหรับการเรียนด้วยการกระทำชั้นจะเป็นเช่นอาร์เรย์เสมือน (อาร์เรย์เสมือน) เดียวกัน คุณสามารถใช้ประกอบการเข้าถึงอาร์เรย์ ([]) ในการเข้าถึงอินสแตนซ์ของชั้นเรียน
ไวยากรณ์
ดัชนีมิติไวยากรณ์ต่อไปนี้:
องค์ประกอบประเภทนี้ [int ดัชนี] { // รับการเข้าถึงได้รับ { // ส่งกลับค่าของดัชนีที่ระบุ} // ชุดเข้าถึงการตั้งค่า { // กำหนดค่าของดัชนีที่ระบุ} }
ดัชนี (ดัชนี) ใช้
การกระทำคำสั่งในลักษณะที่คล้ายกับสถานที่ให้บริการทำดัชนี (ทรัพย์สิน) อสังหาริมทรัพย์ (อสังหาริมทรัพย์) ที่คุณสามารถใช้เพื่อกำหนดSET Index และได้รับการเข้าถึงเช่นแต่คุณสมบัติที่จะถูกส่งกลับหรือตั้งค่าข้อมูลสมาชิกที่เฉพาะเจาะจงและผลตอบแทนดัชนีหรือการตั้งค่าตัวอย่างวัตถุให้เป็นค่าที่เฉพาะเจาะจง ในคำอื่น ๆ ก็เป็นเช่นข้อมูลจะถูกแบ่งออกเป็นส่วนที่มีขนาดเล็กและเป็นส่วนหนึ่งของดัชนีแต่ละได้รับหรือการตั้งค่าแต่ละส่วน
ความหมายของแอตทริบิวต์ (ทรัพย์สิน) ประกอบด้วยการให้ชื่อคุณสมบัติ เมื่อดัชนีไม่ได้กำหนดที่มีชื่อแต่มีคีย์นี้ซึ่งชี้ไปเช่นวัตถุตัวอย่างต่อไปนี้แสดงให้เห็นถึงแนวคิดนี้:
การใช้ระบบ IndexerApplication namespace { IndexedNames ระดับ { ส่วนตัว String [] = namelist สตริงใหม่ [ขนาด]; ขนาด int สาธารณะคงที่ = 10; IndexedNames สาธารณะ () { for (int i = 0; i <ขนาด; i ++) namelist [I] = "NA"; } สตริงสาธารณะ [int ดัชนี] { ได้รับ { สตริง tmp; ถ้า (ดัชนี> = 0 && ดัชนี <= ขนาด-1) { tmp = namelist [ดัชนี]; } อื่น { tmp = ""; } ผลตอบแทน (tmp); } ชุด { ถ้า (ดัชนี> = 0 && ดัชนี <= ขนาด-1) { namelist [ดัชนี] = ค่า; } } } เป็นโมฆะคง main (String args []) { ชื่อ IndexedNames = IndexedNames ใหม่ (); ชื่อ [0] = "ซาร่า"; ชื่อ [1] = "Riz"; ชื่อ [2] = "Nuha"; ชื่อ [3] = "ราวกับ"; ชื่อ [4] = "Davinder"; ชื่อ [5] = "นิล"; ชื่อ [6] = "Rubic"; for (int i = 0; i <IndexedNames.size; i ++) { Console.WriteLine (ชื่อ [I]); } Console.ReadKey (); } } }
เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปนี้:
ซาร่า Riz Nuha ราวกับ Davinder นิล Rubic nanana
มากเกินไปทำดัชนี (ดัชนี)
ดัชนี (ดัชนี) อาจจะมากเกินไป เมื่อประกาศทำดัชนียังสามารถให้กับส่วนใหญ่ของพารามิเตอร์และแต่ละพารามิเตอร์สามารถประเภทที่แตกต่างกัน ไม่จำเป็นต้องมีสำหรับดัชนีต้องเป็นจำนวนเต็มไม่เป็น C # ช่วยให้ indexers อาจจะเป็นประเภทอื่น ๆ เช่นประเภทสตริง
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงทำดัชนีเกินไป:
การใช้ระบบ IndexerApplication namespace { IndexedNames ระดับ { ส่วนตัว String [] = namelist สตริงใหม่ [ขนาด]; ขนาด int สาธารณะคงที่ = 10; IndexedNames สาธารณะ () { for (int i = 0; i <ขนาด; i ++) { namelist [I] = "NA"; } } สตริงสาธารณะ [int ดัชนี] { ได้รับ { สตริง tmp; ถ้า (ดัชนี> = 0 && ดัชนี <= ขนาด-1) { tmp = namelist [ดัชนี]; } อื่น { tmp = ""; } ผลตอบแทน (tmp); } ชุด { ถ้า (ดัชนี> = 0 && ดัชนี <= ขนาด-1) { namelist [ดัชนี] = ค่า; } } } int สาธารณะ [ชื่อสตริง] { ได้รับ { ดัชนี int = 0; ในขณะที่ (ดัชนี <size) { ถ้า (namelist [ดัชนี] == ชื่อ) { ดัชนีผลตอบแทน; } ดัชนี ++; } ดัชนีผลตอบแทน; } } เป็นโมฆะคง main (String args []) { ชื่อ IndexedNames = IndexedNames ใหม่ (); ชื่อ [0] = "ซาร่า"; ชื่อ [1] = "Riz"; ชื่อ [2] = "Nuha"; ชื่อ [3] = "ราวกับ"; ชื่อ [4] = "Davinder"; ชื่อ [5] = "นิล"; ชื่อ [6] = "Rubic"; // ใช้พารามิเตอร์แรกที่มีการทำดัชนี int for (int i = 0; i <IndexedNames.size; i ++) { Console.WriteLine (ชื่อ [I]); } // ใช้ทำดัชนีสองกับพารามิเตอร์สตริง Console.WriteLine (ชื่อ [ "Nuha"]); Console.ReadKey (); } } }
เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปนี้:
ซาร่า Riz Nuha ราวกับ Davinder นิล Rubic nanana 2