আপনার সংগ্রহটি পরিচালনা করতে আপনার অ্যারে দরকার অবশ্যই পরিবর্তনীয় স্ট্রাক্ট এটিগুলি না করে কী করব।
struct EvilMutableStruct { public double X; } // don't do this
EvilMutableStruct[] myArray = new EvilMutableStruct[1];
myArray[0] = new EvilMutableStruct()
myArray[0].X = 1; // works, this modifies the original struct
List<EvilMutableStruct> myList = new List<EvilMutableStruct>();
myList.Add(new EvilMutableStruct());
myList[0].X = 1; // does not work, the List will return a *copy* of the struct
(মনে রাখবেন এমন কিছু ক্ষেত্রে থাকতে পারে যেখানে পরিবর্তনীয় কাঠামোর অ্যারে আকাঙ্ক্ষিত হয়, তবে সাধারণত অন্যান্য সংগ্রহের তুলনায় অ্যারেগুলির মধ্যে পরিবর্তিত স্ট্রকের এই ভিন্ন আচরণটি ত্রুটিগুলির উত্স যা এড়ানো উচিত)
আরও গুরুতরভাবে, আপনি চাইলে আপনার একটি অ্যারের প্রয়োজন রেফারেন্সের মাধ্যমে কোনও উপাদানটি পাস । অর্থাত
Interlocked.Increment(ref myArray[i]); // works
Interlocked.Increment(ref myList[i]); // does not work, you can't pass a property by reference
এটি লক-ফ্রি থ্রেডসেফ কোডের জন্য কার্যকর হতে পারে।
আপনি যদি দ্রুত এবং দক্ষতার সাথে আপনার স্থির-আকারের সংগ্রহটি ডিফল্ট মান দিয়ে শুরু করতে চান তবে আপনার একটি অ্যারের প্রয়োজন ।
double[] myArray = new double[1000]; // contains 1000 '0' values
// without further initialisation
List<double> myList = new List<double>(1000) // internally contains 1000 '0' values,
// since List uses an array as backing storage,
// but you cannot access those
for (int i =0; i<1000; i++) myList.Add(0); // slow and inelegant
(দ্রষ্টব্য যে এটির জন্য তালিকার জন্য কোনও কনস্ট্রাক্টর বাস্তবায়ন করা সম্ভব হবে, এটি কেবলমাত্র সি # এই বৈশিষ্ট্যটি সরবরাহ করে না)
আপনি যদি সংগ্রহের অংশগুলি দক্ষতার সাথে অনুলিপি করতে চান তবে আপনাকে একটি অ্যারের প্রয়োজন
Array.Copy(array1, index1, array2, index2, length) // can't get any faster than this
double[,] array2d = new double[10,100];
double[] arraySerialized = new double[10*100];
Array.Copy(array2d, 0, arraySerialized, 0, arraySerialized.Length);
// even works for different dimensions
(আবার, এটি এমন কিছু যা তালিকার জন্যও কার্যকর করা যেতে পারে, তবে এই বৈশিষ্ট্যটি সি # তে বিদ্যমান নেই)
List<T>