دسته بندی مقالات
- بیشتر -محصولات
- بیشتر -آخرین مقالات
- بیشتر --
پارتیشن بندی در پایگاه داده اوراکل
1403/08/30 -
Delegates در سی شارپ
1403/08/29 -
انواع ایندکس در پایگاه داده اوراکل
1403/08/28 -
سربارگذاری متدها در سی شارپ
1403/08/27 -
انواع پیوند ها (join) در پایگاه داده اوراکل
1403/08/26 -
پارامترهای توابع در سی شارپ
1403/08/25
ارایه با طول متغیر ArrayList در سی شارپ
آرایه با طول متغیر ArrayList در سی شارپ
در زبان برنامهنویسی سیشارپ، آرایهها و ساختارهای مختلف دادهای برای ذخیره و مدیریت دادهها وجود دارند.
از جملهی این ساختارها میتوان به Array و ArrayList اشاره کرد.
هر کدام از این دو نوع ساختار برای مدیریت دادههای مختلف استفاده میشوند، اما تفاوتهای مهمی از نظر کارایی، اندازه و نوع دادهای که میتوانند ذخیره کنند، دارند.
در این مقاله به معرفی ArrayList، تفاوتهای آن با Array و همچنین نکات کاربردی و مهم استفاده از ArrayList در سیشارپ میپردازیم.
آرایهها (Array) در سیشارپ
آرایهها در سیشارپ یکی از اصلیترین انواع ساختارهای دادهای هستند که برای ذخیرهسازی مجموعهای از دادهها استفاده میشوند.
هر آرایه یک مجموعهی مرتب از عناصر با طول ثابت است، به این معنی که پس از تعریف طول آرایه، نمیتوان اندازهی آن را تغییر داد.
عناصر یک آرایه باید همگی از یک نوع دادهای باشند، مثلاً میتوان آرایهای از نوع int یا string داشت، اما نمیتوان در یک آرایه هم عدد صحیح و هم رشته ذخیره کرد.
در سیشارپ، یک آرایه را میتوان بهصورت زیر تعریف و مقداردهی کرد:
int[] numbers = new int[5]; // آرایهای از 5 عدد صحیح
numbers[0] = 10;
numbers[1] = 20;
// و به همین ترتیب ...
یا میتوان مستقیماً مقداردهی اولیه را هنگام تعریف انجام داد:
int[] numbers = { 10, 20, 30, 40, 50 };
آرایهها در سیشارپ دارای طول ثابت هستند.
پس از تعریف و مقداردهی اولیه، نمیتوان اندازهی آنها را تغییر داد.
اگر نیاز به اضافه یا حذف عناصر داشته باشیم، باید یک آرایهی جدید تعریف کنیم یا از ساختارهایی که طول متغیر دارند مانند ArrayList استفاده کنیم.
معرفی ArrayList و کاربرد آن
ArrayList یک کلاس در System.Collections است که نوعی لیست با طول متغیر را فراهم میکند.
این ساختار دادهای به ما اجازه میدهد که بهصورت داینامیک و بدون محدودیت اولیه، عناصر را به لیست اضافه یا حذف کنیم.
برخلاف Array که فقط از یک نوع داده پشتیبانی میکند، ArrayList میتواند از نوعهای مختلف دادهای در یک لیست استفاده کند.
نحوهی تعریف و استفاده از ArrayList
برای تعریف یک ArrayList ابتدا باید فضای نام System.Collections را به برنامه اضافه کنیم:
using System.Collections;
ArrayList myList = new ArrayList();
myList.Add(10); // اضافه کردن عدد صحیح
myList.Add("Hello"); // اضافه کردن یک رشته
myList.Add(3.14); // اضافه کردن عدد اعشاری
همانطور که مشاهده میکنید، در ArrayList میتوان انواع دادههای مختلف را به لیست اضافه کرد.
متدهای اصلی ArrayList در سی شارپ
ArrayList دارای متدهای متنوعی است که عملیات مختلفی را بر روی دادهها فراهم میکند.
برخی از مهمترین متدهای ArrayList عبارتند از:
-
Add
یک عنصر به انتهای لیست اضافه میکند.
myList.Add(25);
-
Insert
عنصری را در موقعیت مشخصی از لیست اضافه میکند.
myList.Insert(1, "World");
-
Remove
یک عنصر مشخص را از لیست حذف میکند.
myList.Remove("Hello");
-
RemoveAt
عنصر موجود در یک ایندکس خاص را حذف میکند.
myList.RemoveAt(0);
-
Clear
تمامی عناصر موجود در ArrayList را حذف میکند.
myList.Clear();
-
Count
تعداد عناصر موجود در ArrayList را برمیگرداند.
int count = myList.Count;
-
Contains
بررسی میکند که آیا عنصر خاصی در ArrayList وجود دارد یا خیر.
bool exists = myList.Contains("Hello");
تفاوتهای اصلی بین Array و ArrayList
Array و ArrayList هر دو برای نگهداری مجموعهای از دادهها استفاده میشوند، اما تفاوتهای مهمی بین آنها وجود دارد:
-
اندازهی ثابت در مقابل اندازهی متغیر
-
Array
اندازهی ثابت دارد وقتی یک آرایه تعریف میشود، اندازهی آن نمیتواند تغییر کند.
اگر نیاز به اضافه کردن عناصر بیشتری باشد، باید یک آرایهی جدید ایجاد کرد. -
ArrayList
دارای اندازهی متغیر است و بهصورت داینامیک میتوان عناصر را به آن اضافه یا حذف کرد.
-
-
نوع داده
-
Array
فقط میتواند عناصر از یک نوع دادهای را نگهداری کند.
مثلاً [...]int فقط میتواند مقادیر عددی صحیح نگهداری کند. -
ArrayList
میتواند انواع دادهای مختلف را در خود جای دهد؛ بنابراین، هم int، هم string و سایر نوعها میتوانند در یک ArrayList ذخیره شوند.
-
-
عملکرد (Performance)
-
Array
از نظر کارایی و سرعت به دلیل ساختار سادهتر، سریعتر عمل میکند.
چونArray
یک ساختار نوعدار است، نوع دادهها از ابتدا مشخص بوده و زمان کمتری برای دسترسی به عناصر نیاز دارد. -
ArrayList
به دلیل پشتیبانی از انواع دادهای مختلف و نیاز به تبدیل نوع دادهای (Boxing و Unboxing)، نسبت به Array کندتر است.
برای هر بار دسترسی به یک مقدار از ArrayList، ممکن است نیاز به تبدیل نوع داده وجود داشته باشد که باعث کاهش عملکرد میشود.
-
-
نیاز به فضای نام (Namespace)
-
Array
بخشی از فضای نام System است و نیازی به اضافه کردن فضای نام دیگری ندارد. -
ArrayList
بخشی از فضای نام System.Collections است و برای استفاده از آن باید این فضای نام را اضافه کنیم.
-
مثالهای کاربردی از ArrayList و مقایسه با Array
-
جمعآوری دادهها از نوعهای مختلف
در سناریوهایی که نیاز است چندین نوع داده در یک لیست ذخیره شوند، ArrayList بسیار مناسب است. به عنوان مثال:
ArrayList items = new ArrayList();
items.Add("Ali");
items.Add(30);
items.Add(true);
foreach (var item in items)
{
Console.WriteLine(item);
}
این کد میتواند انواع دادههای مختلف را ذخیره و نمایش دهد، در حالی که در Array چنین قابلیتی وجود ندارد.
-
اضافه و حذف عناصر
یکی از مشکلات آرایهها این است که اندازهی آنها ثابت است و نمیتوان به راحتی به آنها عناصر جدید اضافه کرد.
در ArrayList بهراحتی میتوان عناصر را اضافه یا حذف کرد:
ArrayList numbers = new ArrayList();
numbers.Add(1);
numbers.Add(2);
numbers.Add(3);
numbers.Remove(2); // حذف عنصر 2
numbers.Add(4); // اضافه کردن عدد جدید
-
استفاده از حلقه foreach با ArrayList
از آنجا که ArrayList از IEnumerable پیروی میکند، میتوان از حلقهی foreach برای پیمایش آن استفاده کرد. مثال:
ArrayList fruits = new ArrayList { "Apple", "Banana", "Cherry" };
foreach (string fruit in fruits)
{
Console.WriteLine(fruit);
}
این حلقه بهسادگی تمام عناصر موجود در ArrayList را پیمایش میکند.
محدودیتها و نکات مهم در استفاده از ArrayList
با وجود مزایای ArrayList، باید به محدودیتها و نکات مهمی نیز توجه داشت:
-
عدم تایپدهی قوی (Lack of Strong Typing)
از آنجا که ArrayList میتواند انواع دادههای مختلف را ذخیره کند، این موضوع ممکن است باعث بروز خطاهای زمان اجرا شود.
برای مثال، اگر انتظار داریم تمام عناصر ArrayList از نوع int باشند، اضافه کردن یک عنصر string میتواند منجر به بروز خطا شود. -
مشکلات تبدیل نوع دادهای (Boxing و Unboxing)
در ArrayList، هر بار که یک نوع دادهی ارزشمند (Value Type) مانند int ذخیره میشود، نیاز به عملیات تبدیل نوع دادهای (Boxing) است و هنگام بازیابی نیز عملیات Unboxing انجام میشود.
این فرآیندها باعث کاهش سرعت برنامه میشود.
مثال پروژه محور از آرایه با طول متغیر ArrayList در طراحی نرم افزاری تجاری
در اینجا یک مثال کوتاه پروژه محور از استفادهی ArrayList برای مدیریت سفارشات در یک فروشگاه آنلاین آورده شده است:
using System;
using System.Collections;
public class OnlineStore
{
public static void Main()
{
ArrayList orders = new ArrayList();
// افزودن سفارشات به لیست
orders.Add("Order #001 - Laptop");
orders.Add("Order #002 - Smartphone");
orders.Add("Order #003 - Headphones");
// افزودن سفارش جدید به صورت دینامیک
orders.Add("Order #004 - Tablet");
// نمایش همه سفارشات
Console.WriteLine("Order List:");
foreach (var order in orders)
{
Console.WriteLine(order);
}
// حذف یک سفارش
orders.Remove("Order #002 - Smartphone");
// نمایش سفارشات بعد از حذف
Console.WriteLine("\nUpdated Order List:");
foreach (var order in orders)
{
Console.WriteLine(order);
}
}
}
توضیحات
-
از ArrayList برای ذخیره و مدیریت سفارشات به صورت پویا استفاده میشود.
-
میتوان به راحتی سفارشات جدید را اضافه و سفارشات قدیمی را حذف کرد.
-
این پروژه به صورت دینامیک اندازهی ArrayList را تغییر میدهد، که یکی از مزایای آن نسبت به Array است.
دوره های مرتبط
آموزش برنامه نویسی سی شارپ
زبان شی گرایی حرفه ای سی شارپ یک زبان قدرتمند برای طراحی نرم افزار به شمار میرود.