Collection در سیشارپ
Collection در سیشارپ برای ذخیره و مدیریت چند داده استفاده میشود و امکان افزودن، حذف و جستوجوی عناصر را فراهم میکند.
10 آبان 1405
لینک کوتاه
Collection در سیشارپ (#C)
در زبان برنامهنویسی سیشارپ، Collection به مجموعهای از دادهها گفته میشود که امکان ذخیرهسازی و مدیریت چندین مقدار را در یک ساختار فراهم میکند.با استفاده از کالکشنها میتوان اطلاعات را اضافه کرد، حذف کرد، جستوجو کرد و به عناصر مختلف دسترسی داشت.
برای مثال، اگر بخواهیم نام چند دانشآموز را در یک برنامه ذخیره کنیم، بهجای تعریف متغیرهای جداگانه برای هر دانشآموز، میتوانیم از یک کالکشن استفاده کنیم.
کالکشنها در برنامهنویسی کاربردهای زیادی دارند و در ساخت نرمافزارهای مدیریت اطلاعات، فروشگاههای اینترنتی، سیستمهای حسابداری و برنامههای مختلف استفاده میشوند.
این ساختارها به برنامهنویس کمک میکنند دادهها را بهتر سازماندهی کند و عملیات مختلف را با کد کمتر و خوانایی بیشتر انجام دهد.
آیا به دنبال یک فرصت عالی برای یادگیری برنامهنویسی هستید؟ 🚀
با دوره آموزشی سیشارپ ما، شما میتوانید مهارتهای خود را به سطح جدیدی ارتقا دهید! این دوره بهطور کامل طراحی شده تا به شما کمک کند تا از مبتدی تا پیشرفته در دنیای برنامهنویسی سیشارپ پیش بروید.
👨🏫 چرا دوره ما را انتخاب کنید؟
- محتوای جامع و عملی: با پروژههای واقعی و تمرینات عملی، یادگیری را به تجربهای جذاب تبدیل کنید.
- مدرس مجرب: از تجربه و دانش مدرس حرفهای بهرهمند شوید که شما را در هر مرحله از یادگیری راهنمایی میکنند.
- پشتیبانی ۲۴/۷: هر زمان که سوالی داشتید، ما در کنار شما خواهیم بود تا به شما کمک کنیم.
- دسترسی مادامالعمر: به محتوای دوره دسترسی دائمی داشته باشید و هر زمان که خواستید، میتوانید به آن مراجعه کنید.
💡 فرصت را از دست ندهید!
بایادگیری سیشارپ، میتوانید در دنیای فناوری اطلاعات به یک متخصص تبدیل شوید و در پروژههای جذاب و چالشبرانگیز شرکت کنید.
همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آیندهای روشنتر بردارید!
شرکت در دوره آموزش برنامه نویسی سی شارپ
تفاوت Collection و Array در سی شارپ
آرایه (Array) و کالکشن هر دو برای نگهداری چند مقدار استفاده میشوند، اما تفاوتهایی با یکدیگر دارند. اندازه آرایه پس از ایجاد ثابت است؛ یعنی اگر آرایهای با ظرفیت پنج عنصر ایجاد کنیم، نمیتوانیم مستقیماً ظرفیت آن را تغییر دهیم.
در مقابل، بسیاری از کالکشنها مانند <List<T بهصورت پویا رشد میکنند و امکان افزودن یا حذف عناصر را فراهم میکنند.
برای مثال، در کد زیر یک آرایه از اعداد صحیح ایجاد شده است:
int[] numbers = { 10, 20, 30 };
اما با استفاده از <List<T میتوانیم تعداد عناصر را بهراحتی افزایش دهیم:List<int> numbers = new List<int>();
numbers.Add(10);
numbers.Add(20);
numbers.Add(30);
numbers.Add(40);
در این مثال، متد ()Add برای اضافه کردن عناصر جدید استفاده شده است.
به همین دلیل، لیست برای موقعیتهایی که تعداد دادهها از ابتدا مشخص نیست، انتخاب مناسبی محسوب میشود.
انواع Collection در سیشارپ
در سیشارپ کالکشنهای مختلفی وجود دارند که هرکدام برای مدیریت نوع خاصی از دادهها طراحی شدهاند.از مهمترین آنها میتوان به <List<T> ، Dictionary<TKey, TValue> ، HashSet<T>، Queue<T و <Stack<T اشاره کرد.
انتخاب کالکشن مناسب به نیاز برنامه بستگی دارد.
برای مثال، گاهی لازم است دادهها را بر اساس اندیس دریافت کنیم، گاهی به جستوجو با استفاده از کلید نیاز داریم و در بعضی موارد باید ترتیب ورود و خروج عناصر حفظ شود. شناخت این ساختارها باعث میشود برنامهنویس بتواند راهکار مناسبتری برای مدیریت اطلاعات انتخاب کند.
کالکشن List در سیشارپ
<List<T یکی از پرکاربردترین کالکشنها در سیشارپ است که برای ذخیره مجموعهای از عناصر همنوع استفاده میشود.حرف T نشاندهنده نوع دادهای است که در لیست نگهداری میشود.
برای مثال، <List<int برای اعداد صحیح و <List<string برای متنها به کار میرود.
برای استفاده از این کالکشن میتوان کد زیر را نوشت:
using System.Collections.Generic;
List<string> names = new List<string>();
names.Add("Ali");
names.Add("Sara");
names.Add("Reza");
Console.WriteLine(names[0]);
خروجی برنامه برابر با Ali خواهد بود؛ زیرا اندیسگذاری در لیست از صفر شروع میشود.
بنابراین، names[0] به اولین عنصر اشاره میکند.
این کالکشن متدهای کاربردی مختلفی دارد.
متد ()Add برای افزودن عنصر، متد ()Remove برای حذف یک مقدار، متد ()Contains برای بررسی وجود یک عنصر و ویژگی Count برای دریافت تعداد عناصر استفاده میشود.
همچنین با استفاده از ()Clear میتوان تمام عناصر لیست را حذف کرد.
کالکشن Dictionary در سیشارپ
<Dictionary<TKey, TValue برای ذخیره اطلاعات بهصورت جفتهای کلید و مقدار استفاده میشود.در این ساختار، هر کلید باید یکتا باشد و از طریق آن میتوان مقدار مرتبط را پیدا کرد.
این کالکشن زمانی مفید است که بخواهیم اطلاعات را با یک شناسه مشخص بازیابی کنیم.
برای مثال، در یک سیستم آموزشی میتوان شماره دانشجویی هر فرد را به نام او مرتبط کرد:
Dictionary<int, string> students =
new Dictionary<int, string>();
students.Add(101, "Ali");
students.Add(102, "Sara");
students.Add(103, "Reza");
Console.WriteLine(students[102]);
خروجی برنامه Sara است؛ زیرا مقدار مرتبط با کلید 102 نمایش داده میشود.
از Dictionary در برنامههای مختلفی مانند ذخیره اطلاعات کاربران، نگهداری قیمت محصولات، مدیریت تنظیمات و ثبت اطلاعات با شناسه مشخص استفاده میشود.
اگر کلیدی که از قبل وجود دارد دوباره با متد Add() اضافه شود، خطا رخ میدهد. برای تغییر مقدار یک کلید موجود میتوان از اندیسگذار استفاده کرد.
کالکشن HashSet در سیشارپ
<HashSet<T کالکشنی است که برای نگهداری عناصر یکتا طراحی شده است.این ساختار از ذخیره شدن عناصر تکراری بهعنوان مقادیر مجزا جلوگیری میکند و برای بررسی وجود یک عنصر در مجموعه نیز کاربرد دارد.
برای مثال:
HashSet<int> numbers = new HashSet<int>();
numbers.Add(10);
numbers.Add(20);
numbers.Add(10);
numbers.Add(30);
Console.WriteLine(numbers.Count);
خروجی برنامه برابر با 3 است؛ زیرا عدد 10 تنها یک بار در مجموعه نگهداری میشود.
این کالکشن زمانی کاربرد دارد که بخواهیم مقادیر تکراری را حذف کنیم یا مجموعهای از عناصر غیرتکراری داشته باشیم.
برای نمونه، در سیستم ثبت نام کاربران میتوان از آن برای نگهداری شناسههای یکتا استفاده کرد.
برخلاف <List<T، در <HashSet<T دسترسی به عناصر از طریق اندیس امکانپذیر نیست و ترتیب عناصر نیز تضمین نمیشود.
کالکشن Queue در سیشارپ
<Queue<T برای مدیریت دادهها به روش FIFO استفاده میشود.عبارت FIFO مخفف First In, First Out است و به معنی «اولین ورودی، اولین خروجی» است.
در این ساختار، عنصری که زودتر وارد صف شده است، زودتر از آن خارج میشود.
برای درک بهتر این مفهوم میتوان صف انتظار در بانک را در نظر گرفت.
معمولاً فردی که زودتر وارد صف شده، زودتر خدمات دریافت میکند.
در برنامهنویسی نیز میتوان از این ساختار برای مدیریت درخواستها و وظایف استفاده کرد.
Queue<string> queue = new Queue<string>();
queue.Enqueue("Ali");
queue.Enqueue("Sara");
queue.Enqueue("Reza");
Console.WriteLine(queue.Dequeue());
خروجی برنامه Ali خواهد بود. متد ()Enqueue برای اضافه کردن عنصر به صف و متد ()Dequeue برای حذف و برگرداندن اولین عنصر استفاده میشود. همچنین متد ()Peek امکان مشاهده اولین عنصر را بدون حذف آن فراهم میکند.
کالکشن Stack در سیشارپ
<Stack<T کالکشنی است که بر اساس روش LIFO کار میکند.این عبارت مخفف Last In, First Out است و به معنی «آخرین ورودی، اولین خروجی» است.
در این ساختار، آخرین عنصری که وارد میشود، اولین عنصری است که خارج میشود.
برای مثال، اگر چند بشقاب را روی یکدیگر قرار دهیم، معمولاً آخرین بشقابی که روی دسته گذاشته شده است، زودتر برداشته میشود.
ساختار پشته در برنامهنویسی نیز عملکرد مشابهی دارد.
Stack<int> stack = new Stack<int>();
stack.Push(10);
stack.Push(20);
stack.Push(30);
Console.WriteLine(stack.Pop());
خروجی برنامه 30 است؛ زیرا عدد 30 آخرین عنصری بوده که به پشته اضافه شده است. متد ()Push برای افزودن عنصر و متد ()Pop برای حذف و برگرداندن عنصر بالای پشته استفاده میشود.
متد ()Peek نیز عنصر بالایی را بدون حذف کردن آن نمایش میدهد.
از پشته در مدیریت تاریخچه عملیات، قابلیت بازگشت به مرحله قبل، بررسی عبارتهای ریاضی و اجرای برخی الگوریتمها استفاده میشود.
کالکشنهای Generic و Non-Generic در سی شارپ
کالکشنها در سیشارپ از نظر نحوه تعیین نوع داده به دو دسته کلی Generic و Non-Generic تقسیم میشوند.کالکشنهای Generic مانند <List<T و <Dictionary<TKey, TValue نوع داده مشخصی دارند.
این ویژگی باعث میشود خطاهای مربوط به نوع داده کاهش پیدا کند و کدها خواناتر شوند.
برای مثال، در <List<int فقط مقادیر سازگار با نوع int قابل ذخیرهسازی هستند.
در مقابل، کالکشنهای Non-Generic مانند ArrayList میتوانند مقادیر با نوعهای مختلف را نگهداری کنند.
using System.Collections;
ArrayList items = new ArrayList();
items.Add(10);
items.Add("Hello");
items.Add(true);
در این مثال، یک عدد، یک رشته و یک مقدار بولی در یک کالکشن قرار گرفتهاند.
با وجود این انعطافپذیری، استفاده از ArrayList ممکن است به تبدیل نوع داده و بررسیهای بیشتر نیاز داشته باشد.
به همین دلیل، در برنامهنویسی مدرن سیشارپ معمولاً کالکشنهای Generic انتخاب مناسبتری هستند.
پیمایش عناصر Collection
یکی از عملیات رایج روی کالکشنها، پیمایش عناصر برای نمایش یا پردازش آنهاست.در سیشارپ میتوان از حلقههایی مانند for و foreach برای این کار استفاده کرد.
حلقه foreach بهویژه زمانی کاربرد دارد که بخواهیم تمام عناصر یک مجموعه را بدون نیاز به مدیریت اندیسها بررسی کنیم.
List<string> names = new List<string>()
{
"Ali",
"Sara",
"Reza"
};
foreach (string name in names)
{
Console.WriteLine(name);
}
در این مثال، حلقه foreach هر نام را بهترتیب دریافت کرده و در خروجی نمایش میدهد.
استفاده از این حلقه باعث سادهتر شدن کد و کاهش احتمال بروز خطا در پیمایش عناصر میشود.
جمعبندی
Collection در سیشارپ یکی از مفاهیم مهم برای ذخیرهسازی و مدیریت مجموعهای از دادهها است.کالکشنها امکانات مختلفی مانند افزودن، حذف، جستوجو و پیمایش عناصر را فراهم میکنند و در بسیاری از برنامههای کاربردی مورد استفاده قرار میگیرند.
هر کالکشن کاربرد مخصوصی دارد.
<List<T برای نگهداری مجموعهای قابل تغییر، <Dictionary<TKey, TValue برای ذخیره دادهها بهصورت کلید و مقدار، <HashSet<T برای نگهداری عناصر یکتا، <Queue<T برای مدیریت صف و <Stack<T برای مدیریت پشته استفاده میشود.




کاربران ما
شما هم نظرتون با ما دریاره “Collection در سیشارپ” اشتراک بزارید
برای ارسال نظر لطفا ورود یا ثبت نام کنید