আমি একটি অবজেক্টের একটি নতুন উদাহরণ তৈরি করতে চাই IEnumerable<object>
আমি কি ইহা করতে পারি?
IEnumerable<object> a = new IEnumerable<object>();
আমি একটি অবজেক্টের একটি নতুন উদাহরণ তৈরি করতে চাই IEnumerable<object>
আমি কি ইহা করতে পারি?
IEnumerable<object> a = new IEnumerable<object>();
IEnumerable<T>। আপনাকে এরকম কিছু ব্যবহার করতে হবে List<T>।
IEnumerable<T>কোনও পুনরাবৃত্তির প্রতিনিধিত্ব করে না - এটি একটি পুনরাবৃত্তীয় ক্রমকে উপস্থাপন করে। IEnumerator<T>নিজেই পুনরাবৃত্তকারীকে উপস্থাপন করে।
উত্তর:
আপনি উদাহরণস্বরূপ তৈরি করতে পারেন List<object>, যা প্রয়োগ করে IEnumerable<object>। উদাহরণ:
List<object> list = new List<object>();
list.Add(1);
list.Add(4);
list.Add(5);
IEnumerable<object> en = list;
CallFunction(en);
IEnumerable<T>এটি একটি খারাপ ধারণা আইএমও।
যেহেতু আপনি এখন নির্দিষ্ট করেছেন আপনি এতে যুক্ত করতে চান, আপনি যা চান তা সাধারণ নয় IEnumerable<T>তবে অন্তত একটি ICollection<T>। আমি কেবল এটির List<T>মতো ব্যবহার করার পরামর্শ দিচ্ছি :
List<object> myList=new List<object>();
myList.Add(1);
myList.Add(2);
myList.Add(3);
প্রয়োগগুলি IEnumerable<object>যেহেতু আপনি প্রত্যাশিত যেখানেই মাইলিস্ট ব্যবহার করতে পারেন ।List<object>IEnumerable<object>
(স্পষ্ট করার আগে পুরানো উত্তর)
IEnumerable<T>এটি একটি সাধারণ ইন্টারফেস হওয়ার কারণে আপনি কোনও উদাহরণ তৈরি করতে পারবেন না (এটি কখনও কখনও ডিফল্ট বাস্তবায়ন নির্দিষ্ট করে দেওয়া সম্ভব হয় তবে এটি কেবলমাত্র সিওএম দিয়ে ব্যবহৃত হয়)।
সুতরাং আপনি যা চান তা হ'ল একটি ক্লাস ইনস্ট্যান্টিয়েট যা ইন্টারফেস প্রয়োগ করে IEnumerable<T>। আপনি কোন ক্লাসটি বেছে নেবেন তার উপর নির্ভর করে আচরণটি পরিবর্তিত হয়।
খালি ক্রম ব্যবহারের জন্য:
IEnumerable<object> e0=Enumerable.Empty<object>();
একটি খালি খালি গণনার জন্য আপনি প্রয়োগ করতে সক্ষম কিছু সংগ্রহ ব্যবহার করতে পারেন IEnumerable<T>। সাধারণ পছন্দগুলি হ'ল অ্যারে T[], List<T>বা আপনি অপরিবর্তনীয়তা চাইলে ReadOnlyCollection<T>।
IEnumerable<object> e1=new object[]{1,2,3};
IEnumerable<object> e2=new List<object>(){1,2,3};
IEnumerable<object> e3=new ReadOnlyCollection(new object[]{1,2,3});
প্রয়োগের আর একটি সাধারণ উপায় IEnumerable<T>হ'ল সি # 3 এ চালু করা পুনরাবৃত্তি বৈশিষ্ট্য :
IEnumerable<object> MyIterator()
{
yield return 1;
yield return 2;
yield return 3;
}
IEnumerable<object> e4=MyIterator();
আরেকটি সমাধান ব্যবহার করা হবে Empty।
IEnumerable<object> a = Enumerable.Empty<object>();
এটি সম্পর্কে একটি থ্রেড রয়েছে: এনিউনামেবল.এম্পটি () নতুন আইনেমিকের সূচনা করার জন্য নতুন তালিকার বিপরীতে ব্যবহার করা ভাল কি?
না আপনি যেহেতু পারেন না IEnumerableএকটি ইন্টারফেস।
আপনার প্রয়োগ হওয়া বেশিরভাগ অ ইন্টারফেস প্রকারের একটি খালি উদাহরণ তৈরি করতে সক্ষম হওয়া উচিত IEnumerable, যেমন: -
IEnumerable<object> a = new object[] { };
বা
IEnumerable<object> a = new List<object>();
না, আপনি এটি করতে পারবেন না। পরিবর্তে নিম্নলিখিত কোড লাইন ব্যবহার করুন:
IEnumerable<int> usersIds = new List<int>() {1, 2, 3}.AsEnumerable();
আমি আসা করি এটা সাহায্য করবে.
আমি একটি নতুন অঙ্কযোগ্য বস্তু বা তালিকা তৈরি করতে চেয়েছিলাম এবং এতে যুক্ত হতে সক্ষম হয়েছি।
এই মন্তব্য সবকিছু পরিবর্তন করে। আপনি জেনেরিক যুক্ত করতে পারবেন না IEnumerable<T>। আপনি যদি ইন্টারফেসের সাথে থাকতে চান তবে আপনাকে এমন System.Collections.Genericএকটি ক্লাস ব্যবহার করতে হবে যা কার্যকর ICollection<T>করে List<T>।
কোনও আইনিউমারেবল কোনও ইন্টারফেস নয়, আপনি ইন্টারফেসের উদাহরণ তৈরি করতে পারবেন না
আপনি এই মত কিছু করতে পারেন
IEnumerable<object> a = new object[0];
new SomeComInterface()কলিংটি ইন্টারফেসের সাথে যুক্ত "কোক্লাস" ইনস্ট্যান্ট করে ইন্টারফেসটি নিজেই ইনস্ট্যান্ট করার চেয়ে?
newআপনি নির্দিষ্ট পরিস্থিতিতে ইন্টারফেসের সাহায্যে ব্যবহার করতে পারেন ।
তুমি এটি করতে পারো:
IEnumerable<object> list = new List<object>(){1, 4, 5}.AsEnumerable();
CallFunction(list);