C# Indexers: ऑब्जेक्ट को Array की तरह Index करना
इंडेक्सर (Indexer) एक विशेष सिंटैक्स है जो किसी क्लास या स्ट्रक्चर के ऑब्जेक्ट को एरे की तरह [] ऑपरेटर का उपयोग करके एक्सेस करने की अनुमति देता है। यह आंतरिक डेटा स्ट्रक्चर (जैसे एरे, लिस्ट, डिक्शनरी) को एनकैप्सुलेट करता है और कस्टम एक्सेस लॉजिक प्रदान करता है।
Indexer का सिंटैक्स
<element-type> this[<parameter-list>] {
get {
// इंडेक्स के आधार पर वैल्यू लौटाएं
}
set {
// इंडेक्स के आधार पर वैल्यू सेट करें
}
}
उदाहरण: कस्टम NameList क्लास में Indexer
using System;
class NameList {
private string[] names;
public int Size { get; }
public NameList(int size) {
Size = size;
names = new string[size];
for (int i = 0; i < size; i++) names[i] = "N/A";
}
// Indexer डिक्लेरेशन
public string this[int index] {
get {
if (index >= 0 && index < Size) return names[index];
return ""; // या throw new IndexOutOfRangeException();
}
set {
if (index >= 0 && index < Size) names[index] = value;
}
}
}
class Program {
static void Main() {
NameList list = new NameList(10);
list[0] = "Tom";
list[1] = "Jacob";
list[2] = "Jack";
// ... अधिक नाम जोड़ें
for (int i = 0; i < list.Size; i++) {
Console.WriteLine(list[i]);
}
}
}
आउटपुट
Tom Jacob Jack Amy Katy Taylor Brad Scarlett James N/A
मुख्य बिंदु
- इंडेक्सर
thisकीवर्ड का उपयोग करते हैं। - ये
getऔरsetएक्सेसर्स के साथ रीड-ओनली, राइट-ओनली या रीड-राइट हो सकते हैं। - एक क्लास में एकाधिक इंडेक्सर हो सकते हैं (ओवरलोडिंग) अलग-अलग पैरामीटर टाइप्स के साथ (जैसे
string,int)। - स्ट्रिंग इंडेक्स के साथ डिक्शनरी-स्टाइल एक्सेस के लिए उपयोगी:
var val = myObj["key"];