मुझे पता है कि गैर सामान्य IEnumerable लागू करने के लिए, इस तरह:मैं कैसे लागू करते हैं IEnumerable <T>
using System;
using System.Collections;
namespace ConsoleApplication33
{
class Program
{
static void Main(string[] args)
{
MyObjects myObjects = new MyObjects();
myObjects[0] = new MyObject() { Foo = "Hello", Bar = 1 };
myObjects[1] = new MyObject() { Foo = "World", Bar = 2 };
foreach (MyObject x in myObjects)
{
Console.WriteLine(x.Foo);
Console.WriteLine(x.Bar);
}
Console.ReadLine();
}
}
class MyObject
{
public string Foo { get; set; }
public int Bar { get; set; }
}
class MyObjects : IEnumerable
{
ArrayList mylist = new ArrayList();
public MyObject this[int index]
{
get { return (MyObject)mylist[index]; }
set { mylist.Insert(index, value); }
}
IEnumerator IEnumerable.GetEnumerator()
{
return mylist.GetEnumerator();
}
}
}
हालांकि मैं भी नोटिस IEnumerable एक सामान्य संस्करण, IEnumerable<T>
है, लेकिन मैं समझ नहीं कैसे कर सकते हैं इसे लागू करने के लिए।
अगर मैं अपने निर्देशों का उपयोग करने के using System.Collections.Generic;
जोड़ें और फिर परिवर्तित करें:
class MyObjects : IEnumerable
रहे हैं:
class MyObjects : IEnumerable<MyObject>
और फिर सही IEnumerable<MyObject>
पर क्लिक करें और Implement Interface => Implement Interface
का चयन करें, विजुअल स्टूडियो काम आते हुए निम्नलिखित ब्लॉक कहते हैं कोड:
IEnumerator<MyObject> IEnumerable<MyObject>.GetEnumerator()
{
throw new NotImplementedException();
}
रिटर्न GetEnumerator();
विधि से गैर जेनेरिक आईनेमेरेबल ऑब्जेक्ट इस समय काम नहीं करता है, तो मैं यहां क्या रखूं? सीएलआई अब जेनेरिक संस्करण के लिए गैर सामान्य कार्यान्वयन और सिर को अनदेखा करता है जब यह फोरच लूप के दौरान मेरी सरणी के माध्यम से गणना करने का प्रयास करता है।
धन्यवाद
गैर-सामान्य कार्यान्वयन में, 'this.GetEnumerator() 'को वापस करने और बस' GetEnumerator()' को वापस करने के बीच कोई अंतर है? –
@TannerSwett कोई फर्क नहीं पड़ता। –