আমি জানি যে কীভাবে জেনারিক আইএননামারেবল কার্যকর করা যায়, এর মতো:
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<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()
?