C# में एक इंडेक्सर किसी ऑब्जेक्ट को सरणी की तरह इंडेक्स करने की अनुमति देता है। जब किसी क्लास के लिए इंडेक्सर परिभाषित किया जाता है, तो यह क्लास एक वर्चुअल सरणी की तरह व्यवहार करती है। फिर आप इस क्लास के इंस्टेंस को सरणी एक्सेस ऑपरेटर ([ ]) का उपयोग करके एक्सेस कर सकते हैं।
इंडेक्सर्स को ओवरलोड किया जा सकता है। इंडेक्सर्स को कई पैरामीटर्स के साथ भी घोषित किया जा सकता है और प्रत्येक पैरामीटर एक अलग प्रकार का हो सकता है।
निम्नलिखित C# में ओवरलोडेड इंडेक्सर्स का एक उदाहरण है:
उदाहरण
using System; namespace IndexerApplication { class IndexedNames { private string[] namelist = new string[size]; static public int size = 10; public IndexedNames() { for (int i = 0; i < size; i++) { namelist[i] = "N. A."; } } public string this[int index] { get { string tmp; if( index >= 0 && index <= size-1 ) { tmp = namelist[index]; } else { tmp = ""; } return ( tmp ); } set { if( index >= 0 && index <= size-1 ) { namelist[index] = value; } } } public int this[string name] { get { int index = 0; while(index < size) { if (namelist[index] == name) { return index; } index++; } return index; } } static void Main(string[] args) { IndexedNames names = new IndexedNames(); names[0] = "John"; names[1] = "Joe"; names[2] = "Graham"; names[3] = "William"; names[4] = "Jack"; names[5] = "Tom"; names[6] = "Tim"; // int पैरामीटर के साथ पहले इंडेक्सर का उपयोग for (int i = 0; i < IndexedNames.size; i++) { Console.WriteLine(names[i]); } // string पैरामीटर के साथ दूसरे इंडेक्सर का उपयोग Console.WriteLine(names["Nuha"]); Console.ReadKey(); } } }आउटपुट
John Joe Graham William Jack Tom Tim N. A. N. A. N. A. 10