کالکشن ها در سی شارپ (Collections)
برای نگهداری گروهی از دادهها در زبان برنامهنویسی، ما با مفهومی به نام آرایه روبرو هستیم. با استفاده از آرایه، میتوانیم مجموعهای از دادهها را کنار هم نگه داریم و به عنوان یک لیست از آنها استفاده کنیم. اما آرایهها یک مشکل اساسی دارند، و آن این است که اندازهشان ثابت است. زمانی که ما یک آرایهی صد عنصری را تعریف میکنیم، دیگر بعد از تعریفش نمیتوانیم اندازه آرایه را تغییر دهیم؛ مثلاً گفتیم صد آیتم درونش قرار بگیرد و بعد از چند خط کد بگوییم صد تا نمیخواهیم، 200 تا میخواهیم. به هیچ عنوان چنین امکانی وجود ندارد و بزرگترین عیب آرایهها این است که اندازهشان ثابت است و نمیتوانیم آن را تغییر دهیم. فقط زمانی که آرایه را تعریف کنیم، میتوانیم یک اندازه برای آن تعریف کنیم و تا انتهای برنامه، آن اندازه برایش ثابت باقی میماند. این یک مشکل اساسی است و دلیل عدم استفاده همیشگی از آرایهها در جاهای مختلف است، مگر در کاربردهای خاص که در آن اندازه آرایه را ثابت بخواهیم و نیاز به تغییر اندازه آرایه نداشته باشیم. در این موارد، عملکرد برنامه بالاتر است نسبت به مواقعی که از مجموعهها استفاده میکنیم. اما به علت محدودیتهایی که آرایهها دارند، از مجموعهها یا کالکشنها بیشتر استفاده میشود.
کالکشن چیست؟
کالکشنها یا مجموعهها توسط .NET و یا فریمورکهای دیگر که کالکشن را پیادهسازی کردهاند، آرایه شدهاند تا محدودیتهای آرایهها را برطرف کنند. در واقع، کالکشنها با استفاده از امکانات بیشتری، آرایهها را برای ما ارایه میکنند تا بتوانیم از این کالکشنها استفاده کنیم. به این معنا که زمانی که ما یک کالکشن ایجاد میکنیم، دیگر اندازهاش مهم نیست و میتوانیم اندازهاش را تغییر دهیم. همچنین، کالکشنها امکانات دیگری را در اختیار ما قرار میدهند، امکاناتی مثل اضافه کردن آیتم به کالکشن، حذف آیتم از کالکشن، جستوجو، مرتبسازی، جستجو، جایگزینی آیتمهای مختلف، کپی و امکانات زیادی دیگر را برای هر کالکشن در اختیار ما قرار میدهند.
اما کالکشنها چندین نوع هستند و ما میتوانیم از کالکشنهای مختلفی استفاده کنیم. به طور کلی، کالکشنهایی که در .NET داریم به دو دسته تقسیم میشوند که در نیماسپیسهای System.Collection و System.Collection.Generic قرار دارند. کالکشنهایی که در System.Collection قرار دارند، دادهها را به صورت شیء برای ما نگهداری میکنند. ما یک کالکشن داریم به نام ArrayList که دادهها را به صورت شیء برای ما نگهداری میکند و میدانیم که در شیء هر چیزی میتوانیم قرار دهیم. بعد از آن، Hashtable، Queue و Stack را داریم که به صورت شیء دادهها را برای ما نگهداری میکنند و در نیماسپیس System.Collection قرار دارند.
در System.Collection.Generic، میتوانیم به صورت جنریک تایپ را برای آنها مشخص کنیم که شامل کالکشنهای List، Dictionary، Queue، SortedList و Stack است. دقت کنید که Stack و Queue هم به صورت کلاسهای معمولی میآیند و هم به صورت جنریک.
1- System.Collection:
ArrayList
Hashtable
Queue
Stack
2- System.Collection.Generic:
List
Dictionary
Queue
SortedList
Stack
مسئله مهمی در مورد کالکشنها یا هر نوع لیستی که در دنیای واقعی یا دنیای برنامهنویسی وجود دارد، این است که ما بتوانیم آن لیست را شمارش کنیم تا بتوانیم از آن استفاده کنیم. اگر نتوانیم لیستمان را شمارش کنیم، به هیچ عنوان نمیتوانیم از آن استفاده کنیم. در داتنت، مکانیزمهایی ارایه شدهاند برای اینکه ما بتوانیم این کالکشنها را پیمایش کنیم، آنها را شمارش کنیم و از آنها استفاده کنیم.
بنابراین، در این مطلب ما به بررسی کالکشنها و تفاوتهای آنها با آرایهها در زبان برنامهنویسی سی شارپ پرداختیم. کالکشنها راهحلی برای رفع محدودیتهای آرایهها ارائه میدهند و امکانات گستردهتری را در اختیار برنامهنویسان قرار میدهند. با استفاده از کالکشنها، میتوانیم دادهها را به صورت پویا مدیریت کنیم و از توابع مختلف برای کار با آنها بهرهبرداری کنیم.
برای یادگیری کامل سی شارپ و کسب دانش جامع درباره کالکشنها و دیگر جنبههای این زبان برنامهنویسی، میتوانید در دوره "ستارگان سی شارپ" شرکت کنید. این دوره آموزشی جامع شما را در فراگیری مهارتهای لازم برای تبدیل شدن به یک برنامهنویس حرفهای سی شارپ یاری میدهد. به برنامهنویسان عزیز توصیه میکنیم که از این فرصت استفاده کنند و در دوره "ستارگان سی شارپ" ثبتنام نمایند.