انواع کالکشن (Collections) در سی شارپ
انواع کالکشن (Collections) در سی شارپ شامل ،Dictionary، Queue، Stack، HashSet، SortedList
مفهوم کالکشن (Collections) در سیشارپ
کالکشنها (Collections) در سیشارپ یکی از مهمترین اجزای زبان برنامهنویسی داتنت محسوب میشوند.
آنها برای مدیریت و نگهداری مجموعهای از اشیا به کار میروند.
برخلاف آرایهها که اندازهی ثابتی دارند، کالکشنها انعطافپذیرتر هستند و میتوانند به طور پویا تغییر اندازه دهند.
کالکشن در سیشارپ مجموعهای از اشیا است که امکان ذخیره، بازیابی و مدیریت دادهها را فراهم میکند.
کالکشنها انواع مختلفی دارند که هر یک برای کاربردهای خاصی طراحی شدهاند.

انواع کالکشن در سیشارپ
-
ArrayList
ArrayList یک کالکشن غیرجنریک است که میتواند انواع مختلفی از دادهها را ذخیره کند.
این کلاس از System.Collections میآید و به دلیل عدم نوعبندی (Type Safety)، نیاز به تبدیل نوع (Casting) دارد.
مثال:
ArrayList list = new ArrayList();
list.Add(1);
list.Add("Hello");
list.Add(3.14);
-
List
<List<T یک کالکشن جنریک است که عملکرد بالایی دارد و امکان ذخیره دادهها بهصورت نوعبندیشده را فراهم میکند.
مثال:
List<int> numbers = new List<int>();
numbers.Add(10);
numbers.Add(20);
numbers.Add(30);
-
<Dictionary<TKey, TValue
<Dictionary<TKey, TValue دادهها را بهصورت کلید-مقدار ذخیره میکند.
مثال:
Dictionary<int, string> students = new Dictionary<int, string>();
students.Add(1, "Ali");
students.Add(2, "Reza");
-
HashSet
<HashSet<T مجموعهای از دادههای منحصربهفرد است.
مثال:
HashSet<int> numbers = new HashSet<int> {1, 2, 3, 3, 4};
-
Queue
<Queue<T یک صف (FIFO) است که اولین عنصر اضافهشده، اولین عنصر حذفشده خواهد بود.
مثال:
Queue<string> queue = new Queue<string>();
queue.Enqueue("A");
queue.Enqueue("B");
queue.Dequeue();
-
Stack
<Stack<T یک پشته (LIFO) است که آخرین مقدار اضافهشده، اولین مقدار حذفشده خواهد بود.
مثال:
Stack<int> stack = new Stack<int>();
stack.Push(1);
stack.Push(2);
stack.Pop();
-
<SortedList<TKey, TValue
<SortedList<TKey, TValue مشابه Dictionary است اما دادهها را بهصورت مرتبشده بر اساس کلید نگه میدارد.
مثال:
SortedList<int, string> sortedList = new SortedList<int, string>();
sortedList.Add(2, "B");
sortedList.Add(1, "A");
-
LinkedList
<LinkedList<T یک لیست پیوندی دوطرفه است که برای عملیات درج و حذف سریعتر است.
مثال:
LinkedList<int> linkedList = new LinkedList<int>();
linkedList.AddFirst(1);
linkedList.AddLast(2);
-
ObservableCollection
<ObservableCollection<T برای اعلان تغییرات به UI در برنامههای WPF استفاده میشود.
-
ConcurrentBag
<ConcurrentBag<T یک کالکشن همزمان برای محیطهای چندنخی (Multithreading) است.
-
ConcurrentQueue
<ConcurrentQueue<T یک نسخه همزمان و ایمن از <Queue<T است.
-
ConcurrentStack
<ConcurrentStack<T یک نسخه همزمان و ایمن از <Stack<T است.
-
BlockingCollection
<BlockingCollection<T برای مدیریت تولید و مصرف دادهها در محیطهای چندنخی استفاده میشود.
-
BitArray
BitArray یک آرایه از بیتها (true/false) است که برای بهینهسازی فضای ذخیرهسازی استفاده میشود.
-
ReadOnlyCollection
<ReadOnlyCollection<T لیستی فقط خواندنی است.
-
ImmutableList
<ImmutableList<T یک لیست تغییرناپذیر است که بعد از مقداردهی دیگر تغییر نمیکند.
-
<ImmutableDictionary<TKey, TValue
<ImmutableDictionary<TKey, TValue مشابه Dictionary اما تغییرناپذیر است.
-
<SortedDictionary<TKey, TValue
<SortedDictionary<TKey, TValue مانند <Dictionary<TKey, TValue اما مرتبشده است.
-
SortedSet
<SortedSet<T یک مجموعه مرتبشده است که به ترتیب مقدارها را ذخیره میکند.
-
<PriorityQueue<TElement, TPriority
<PriorityQueue<TElement, TPriority یک صف اولویتدار برای پردازش عناصر بر اساس اولویت آنها است.

کلاس ArrayList در سی شارپ
کلاس ArrayList یکی از انواع کالکشنهای قدیمی در فضای نام System.Collections است که به دلیل عدم استفاده از جنریکها، انعطافپذیری بیشتری در ذخیره انواع مختلف دادهها دارد اما از نظر عملکردی نسبت به <List<T کندتر است.
افزودن عناصر با استفاده از AddRange
متد AddRange برای اضافه کردن چندین عنصر به صورت یکجا به ArrayList استفاده میشود.
using System;
using System.Collections;
class Program
{
static void Main()
{
ArrayList arrayList = new ArrayList();
arrayList.Add("علی");
arrayList.Add("مریم");
ArrayList newItems = new ArrayList() { "رضا", "سارا" };
arrayList.AddRange(newItems);
foreach (var item in arrayList)
{
Console.WriteLine(item);
}
}
}
آیا به دنبال یک فرصت عالی برای یادگیری برنامهنویسی هستید؟ 🚀
با دوره آموزشی سیشارپ ما، شما میتوانید مهارتهای خود را به سطح جدیدی ارتقا دهید! این دوره بهطور کامل طراحی شده تا به شما کمک کند تا از مبتدی تا پیشرفته در دنیای برنامهنویسی سیشارپ پیش بروید.
👨🏫 چرا دوره ما را انتخاب کنید؟
- محتوای جامع و عملی: با پروژههای واقعی و تمرینات عملی، یادگیری را به تجربهای جذاب تبدیل کنید.
- مدرس مجرب: از تجربه و دانش مدرس حرفهای بهرهمند شوید که شما را در هر مرحله از یادگیری راهنمایی میکنند.
- پشتیبانی ۲۴/۷: هر زمان که سوالی داشتید، ما در کنار شما خواهیم بود تا به شما کمک کنیم.
- دسترسی مادامالعمر: به محتوای دوره دسترسی دائمی داشته باشید و هر زمان که خواستید، میتوانید به آن مراجعه کنید.
💡 فرصت را از دست ندهید!
بایادگیری سیشارپ، میتوانید در دنیای فناوری اطلاعات به یک متخصص تبدیل شوید و در پروژههای جذاب و چالشبرانگیز شرکت کنید.
همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آیندهای روشنتر بردارید!
شرکت در دوره آموزش برنامه نویسی سی شارپ
حذف مجموعهای از عناصر با RemoveRange
متد RemoveRange امکان حذف چندین عنصر به صورت یکجا را فراهم میکند.
arrayList.RemoveRange(1, 2); // حذف دو عنصر از ایندکس 1 به بعد
حذف عنصر مشخص با RemoveAt
متد RemoveAt برای حذف یک عنصر خاص بر اساس ایندکس استفاده میشود.
arrayList.RemoveAt(2); // حذف عنصر در ایندکس 2
حذف عنصر مشخص با Remove
متد Remove برای حذف یک مقدار مشخص از ArrayList استفاده میشود.
arrayList.Remove("مریم"); // حذف مقدار "مریم" از لیست
ایجاد یک کالکشن در سیشارپ
برای ایجاد و استفاده از کالکشنها در سیشارپ، ابتدا باید فضای نام مربوطه را در برنامه وارد کنیم و سپس نوع کالکشن مناسب را انتخاب نماییم.
مثال 1: استفاده از List
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<string> names = new List<string>();
names.Add("علی");
names.Add("مریم");
names.Add("رضا");
foreach (var name in names)
{
Console.WriteLine(name);
}
}
}
در این مثال یک <List<string ایجاد شده که نامها را در خود نگه میدارد و سپس آنها را نمایش میدهد.
مزایای کالکشن (Collections) در سیشارپ
از جمله مزایای کالکشنها میتوان به موارد زیر اشاره کرد:
-
مدیریت آسانتر دادهها
-
انعطافپذیری بیشتر نسبت به آرایهها
-
پشتیبانی از قابلیتهایی مانند مرتبسازی، جستجو و فیلتر کردن دادهها
-
استفاده از قابلیتهای داخلی داتنت برای بهینهسازی کارایی و مدیریت حافظ

مثال پروژه محور از انواع کالکشنها در سیشارپ
پروژه مدیریت سفارشات با استفاده از کالکشنها در سیشارپ
در این مثال، از <List<T برای مدیریت سفارشات مشتریان استفاده میکنیم.
کد پروژه
using System;
using System.Collections.Generic;
class Program
{
static List<string> orders = new List<string>(); // لیست سفارشات
static void Main()
{
while (true)
{
Console.WriteLine("\n1. افزودن سفارش");
Console.WriteLine("2. نمایش سفارشات");
Console.WriteLine("3. خروج");
Console.Write("انتخاب کنید: ");
string choice = Console.ReadLine();
switch (choice)
{
case "1":
AddOrder();
break;
case "2":
DisplayOrders();
break;
case "3":
return;
default:
Console.WriteLine("گزینه نامعتبر است!");
break;
}
}
}
static void AddOrder()
{
Console.Write("نام سفارش: ");
string order = Console.ReadLine();
orders.Add(order);
Console.WriteLine("سفارش اضافه شد.");
}
static void DisplayOrders()
{
Console.WriteLine("\nلیست سفارشات:");
foreach (var order in orders)
Console.WriteLine($"- {order}");
}
}
ویژگیهای پروژه
- مدیریت سفارشات با <List<T
- افزودن و نمایش سفارشات
- منوی ساده و کاربردی
اجرای نمونه
1. افزودن سفارش
2. نمایش سفارشات
3. خروج
انتخاب کنید: 1
نام سفارش: لپتاپ
سفارش اضافه شد.
کاربران ما
شما هم نظرتون با ما دریاره “انواع کالکشن (Collections) در سی شارپ” اشتراک بزارید
برای ارسال نظر لطفا ورود یا ثبت نام کنید