C# Language
IEnumerable
खोज…
परिचय
IEnumerable
ArrayList की तरह सभी गैर-जेनेरिक संग्रहों के लिए आधार इंटरफ़ेस है, जिसे एनुमरेट किया जा सकता है। IEnumerator<T>
सूची <> जैसे सभी सामान्य प्रगणकों के लिए आधार इंटरफ़ेस है।
IEnumerable
एक इंटरफ़ेस है जो विधि GetEnumerator
लागू करता है। GetEnumerator
विधि एक IEnumerator
प्रदान करता है जो फ़ॉरच जैसे संग्रह के माध्यम से पुनरावृति करने के लिए विकल्प प्रदान करता है।
टिप्पणियों
IEnumerable सभी गैर-जेनेरिक संग्रहों के लिए आधार इंटरफ़ेस है जिसे एन्यूमरेट किया जा सकता है
IEnumerable
अपने सबसे बुनियादी रूप में, IEnumerable को लागू करने वाली एक वस्तु वस्तुओं की एक श्रृंखला का प्रतिनिधित्व करती है। प्रश्न की वस्तुओं को c # foreach
कीवर्ड का उपयोग करके पुनरावृत्त किया जा सकता है।
नीचे दिए गए उदाहरण में, वस्तु sequenceOfNumbers
लागू IEnumerable। यह पूर्णांकों की एक श्रृंखला का प्रतिनिधित्व करता है। foreach
लूप बदले में प्रत्येक के माध्यम से पुनरावृत्त होता है।
int AddNumbers(IEnumerable<int> sequenceOfNumbers) {
int returnValue = 0;
foreach(int i in sequenceOfNumbers) {
returnValue += i;
}
return returnValue;
}
कस्टम एन्यूमरेटर के साथ IEnumerable
IEnumerable इंटरफ़ेस को लागू करने से बीसीएल के संग्रह की तरह ही कक्षाओं की गणना की जा सकती है। इसके लिए एन्यूमरेटर क्लास को विस्तारित करना आवश्यक है जो एन्यूमरेशन की स्थिति को ट्रैक करता है।
मानक संग्रह पर पुनरावृति के अलावा, उदाहरणों में शामिल हैं:
- वस्तुओं के संग्रह के बजाय एक फ़ंक्शन के आधार पर संख्याओं की श्रेणियों का उपयोग करना
- एक संग्रह पर डीएफएस या बीएफएस जैसे संग्रह पर विभिन्न पुनरावृत्ति एल्गोरिदम को लागू करना
public static void Main(string[] args) {
foreach (var coffee in new CoffeeCollection()) {
Console.WriteLine(coffee);
}
}
public class CoffeeCollection : IEnumerable {
private CoffeeEnumerator enumerator;
public CoffeeCollection() {
enumerator = new CoffeeEnumerator();
}
public IEnumerator GetEnumerator() {
return enumerator;
}
public class CoffeeEnumerator : IEnumerator {
string[] beverages = new string[3] { "espresso", "macchiato", "latte" };
int currentIndex = -1;
public object Current {
get {
return beverages[currentIndex];
}
}
public bool MoveNext() {
currentIndex++;
if (currentIndex < beverages.Length) {
return true;
}
return false;
}
public void Reset() {
currentIndex = 0;
}
}
}