.NET একটি জেনেরিক তালিকা ধারক সরবরাহ করে যার পারফরম্যান্স প্রায় অভিন্ন ((অ্যারে বনাম তালিকার প্রশ্নগুলির পারফরম্যান্স দেখুন)। তবে এগুলি আরম্ভের ক্ষেত্রে একেবারেই আলাদা।
অ্যারেগুলি ডিফল্ট মান দিয়ে শুরু করা খুব সহজ এবং সংজ্ঞা অনুসারে তাদের ইতিমধ্যে নির্দিষ্ট আকার রয়েছে:
string[] Ar = new string[10];
যা একজনকে নিরাপদে এলোমেলো আইটেম বরাদ্দ করতে দেয়, বলুন:
Ar[5]="hello";
তালিকাগুলির সাথে জিনিসগুলি আরও জটিল। আমি একই সূচনা করার দুটি উপায় দেখতে পাচ্ছি, যার মধ্যে কোনওটিই আপনি মার্জিত বলবেন না:
List<string> L = new List<string>(10);
for (int i=0;i<10;i++) L.Add(null);
অথবা
string[] Ar = new string[10];
List<string> L = new List<string>(Ar);
একটি পরিষ্কার উপায় কি হবে?
সম্পাদনা: এখন পর্যন্ত উত্তরগুলি সক্ষমতা বোঝায়, যা একটি তালিকা প্রাক-জনপ্রিয়করণ ব্যতীত অন্য কিছু। উদাহরণস্বরূপ, কেবলমাত্র 10 এর ক্ষমতা দিয়ে তৈরি একটি তালিকায়, কেউ এটি করতে পারে নাL[2]="somevalue"
সম্পাদনা 2: লোকেরা কেন বিস্মিত হয় যে আমি কেন এইভাবে তালিকাগুলি ব্যবহার করতে চাই, কারণ এটি সেভাবে ব্যবহার করার উদ্দেশ্যে নয়। আমি দুটি কারণ দেখতে পাচ্ছি:
কেউ যথেষ্ট দৃinc়তার সাথে তর্ক করতে পারে যে তালিকাগুলি হ'ল "পরবর্তী প্রজন্মের" অ্যারে এবং প্রায় কোনও জরিমানা ছাড়াই নমনীয়তা যুক্ত করে। সুতরাং একটি ডিফল্ট হিসাবে তাদের ব্যবহার করা উচিত। আমি ইঙ্গিত করছি তারা সম্ভবত আরম্ভ করা সহজ না হতে পারে।
আমি বর্তমানে যা লিখছি তা হ'ল একটি বড় কাঠামোর অংশ হিসাবে ডিফল্ট কার্যকারিতা সরবরাহকারী একটি বেস ক্লাস। আমি যে ডিফল্ট কার্যকারিতাটি অফার করি তাতে তালিকার আকার অগ্রিম পরিচিত এবং তাই আমি কোনও অ্যারে ব্যবহার করতে পারতাম। তবে, আমি যে কোনও বেস ক্লাসকে গতিশীলভাবে এটি প্রসারিত করার সুযোগ দিতে চাই এবং তাই আমি একটি তালিকা বেছে নিই।
List
এর জন্য প্রতিস্থাপন নয় Array
। তারা স্বতন্ত্রভাবে পৃথক সমস্যাগুলি সমাধান করে। আপনি যদি একটি নির্দিষ্ট আকার চান, আপনি একটি চান Array
। আপনি যদি একটি ব্যবহার করেন তবে আপনি List
এটি করছেন ভুল।