PDA

View Full Version : تولید یک آرایه با تعداد عناصر نا محدود



Fire_Falcon
سه شنبه 08 آذر 1390, 12:26 عصر
میخوام یه آرایه تولید کنم که تعداد عناصرش نا محدود باشه ععنی هر وقت یک عددی بهش دادیم تعدادش زیاد بشه...
کلی بگم میخوام تعداد آرایه تغیر بکنه تو اجرای برنامه

int[] f = new int [100];
یعنی مقدار 100 رو بهش ندیم و صد تا عدد یا بیشتر توش ذخیره کنیم...

solaleh
سه شنبه 08 آذر 1390, 12:55 عصر
List<int> lst = new List<int>();
lst.Add("1");
lst.Add("2");
...
int[] array = lst.ToArray();

Hajivandian
سه شنبه 08 آذر 1390, 14:35 عصر
از ArrayList استفاده کن، خودش همه چی رو مدیریت می کنه

mehdi.mousavi
سه شنبه 08 آذر 1390, 14:50 عصر
از ArrayList استفاده کن، خودش همه چی رو مدیریت می کنه

سلام.
تبدیل value type به object یا هر interface type ای که توسط اون value type پیاده سازی شده باشه رو بهش Boxing میگن. وقتی شما مقدار 123 رو در متغیر myobj میریزید، CLR مقدار مزبور رو داخل یک Object (تازه allocate شده) قرار میده و اونو در Managed Heap نگهداری میکنه:

object myObj = 123;

اینجا، برای انجام عمل Assignment فوق، عمل Boxing انجام میشه. از اونجاییکه عناصر یک ArrayList همگی Object هستن، پس بطور خودکار قرار دادن value type ها در ArrayList منجر به Boxing میشه. استخراج هر آیتم از این لیست نیز باعث عمل Unboxing میشه (هنگام Cast کردن Object به Data Type اصلی که در مثال فوق int هستش). Boxing/Unboxing کارآمد نیست و Performance پایینی داره، چرا که یک عمل Assignment ساده، منجر به allocate شدن یک object میشه. در صورتیکه استفاده از List<int> چنین محدودیتی رو در پی نداره... بنابراین، دیگه نه خودتون هرگز از ArrayList استفاده کنید، و نه هرگز استفاده از اونو به دیگران توصیه کنید.

موفق باشید.