
آموزش آرایه ها و کالکشن ها در سی شارپ
آموزش آرایه ها و کالکشن ها در سی شارپ یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته ی آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته ی آموزشی آموزش کار کردن با کلاس های کالکشنی در سی شارپ است که با نام اصلی #Working with Arrays and Collections in C از شرکت Pluralsight منتشر شده است.
آرایه ها در زبان سی شارپ
آرایهها در زبان برنامهنویسی سی شارپ از جمله ساختارهای دادهای مهم هستند. آرایهها مجموعهای از عناصر یکسان یا متفاوت هستند که با استفاده از یک نام مشترک به صورت خطی در حافظه ذخیره میشوند و هر عنصر به وسیله یک اندیس قابل دسترسی است. اندیسها در آرایه با اعداد صحیح شروع میشوند. با استفاده از آرایهها میتوانیم دادهها را به صورت منظم و ساختارمند مدیریت کنیم و به راحتی به عناصر دلخواه دسترسی پیدا کنیم. استفاده از آرایهها در سی شارپ از جمله روشهای پرکاربرد برای ذخیرهسازی و مدیریت دادهها در برنامهها است. آرایه ها reference type هایی هستند که از یک کلاس abstract به نام Array ساخته می شوند. همه آرایه ها IList و IEnumerable را پیاده سازی می کنند. می توانید از دستور foreach برای عمل تکرار در یک آرایه استفاده کنید.
عملیات معمول بر روی آرایه ها در سی شارپ
در سی شارپ، میتوانیم از آرایهها برای ثبت و دسترسی به اطلاعات، جستجو و مرتبسازی اطلاعات، حذف و اضافه کردن عناصر، تغییر مقادیر عناصر و انجام عملیات ریاضی و منطقی بر روی عناصر استفاده کنیم. از آرایهها میتوان در الگوریتمها، ساختارهای داده، انجام محاسبات ماتریسی و بسیاری از توابع محاسباتی دیگر استفاده کرد.

از جمله عملیاتهای مهم بر روی آرایهها در سی شارپ میتوان به جستجو، مرتبسازی، افزودن و حذف عناصر، تغییر اندازه آرایه و انجام عملیات ریاضی اشاره کرد که هر کدام به طور گستردهای در برنامهنویسی مورد استفاده قرار میگیرند و کمک میکنند تا کدها بهینهتر و قابل فهمتر باشند.
تفاوت Array و Collection در زبان C#
در C#، آرایه ها و کالکشن ها هر دو برای نگهداری مجموعه ای از داده ها استفاده می شوند، اما از نظر نحوه مدیریت عناصر تفاوت هایی دارند. اندازه آرایه پس از ایجاد ثابت است و برای دسترسی به عناصر آن از اندیس استفاده می شود. در مقابل، بسیاری از کالکشن ها امکان اضافه کردن یا حذف کردن عناصر را در طول اجرای برنامه فراهم می کنند. انتخاب میان این ساختارها به نیاز برنامه، تعداد داده ها و نوع عملیاتی بستگی دارد که باید روی مجموعه انجام شوند.
برای مثال، اگر تعداد عناصر از ابتدا مشخص باشد و در طول اجرای برنامه تغییر نکند، آرایه می تواند انتخاب مناسبی باشد. اما اگر قرار است اطلاعاتی مانند فهرست محصولات یا نتایج جست وجو به صورت پویا تغییر کنند، استفاده از کالکشنی مانند `List<T>` معمولاً راحت تر است. آشنایی با ویژگی های هر ساختار به شما کمک می کند از پیچیدگی غیرضروری جلوگیری کنید و متناسب با نیاز برنامه، روش مناسبی برای نگهداری و دسترسی به داده ها انتخاب کنید.
کاربرد List و Dictionary در برنامه نویسی سی شارپ
`List<T>` یکی از کالکشن های پرکاربرد در C# است که برای نگهداری مجموعه ای از عناصر با نوع مشخص استفاده می شود. برخلاف آرایه، یک List می تواند هنگام اجرای برنامه رشد کند یا کوچک شود و متدهایی برای اضافه کردن، حذف کردن و جست وجوی عناصر ارائه می دهد. برای مثال، می توانید از `List<string>` برای نگهداری نام کاربران یا از `List<int>` برای ذخیره مجموعه ای از شناسه ها استفاده کنید. مشخص بودن نوع داده نیز به بررسی سازگاری مقادیر کمک می کند.
`Dictionary<TKey, TValue>` برای نگهداری داده ها به صورت جفت های کلید و مقدار طراحی شده است. در این ساختار، هر کلید باید یکتا باشد و برای دسترسی به مقدار مرتبط با آن استفاده می شود. برای مثال، می توانید شناسه یک محصول را به عنوان کلید و اطلاعات آن را به عنوان مقدار ذخیره کنید. Dictionary برای مواقعی مناسب است که بازیابی اطلاعات بر اساس یک کلید مشخص اهمیت دارد. شناخت تفاوت این دو کالکشن به شما کمک می کند ساختار داده مناسب تری برای سناریوهای مختلف انتخاب کنید.
آشنایی با Set و جلوگیری از داده های تکراری در C#
گاهی در برنامه لازم است مجموعه ای از مقادیر را نگهداری کنید، اما وجود عناصر تکراری مطلوب نیست. برای این موقعیت ها می توانید از ساختارهای مبتنی بر Set در دات نت استفاده کنید. برای مثال، `HashSet<T>` مجموعه ای از عناصر یکتا را نگهداری می کند و امکان بررسی وجود یک مقدار در مجموعه را فراهم می سازد. این ویژگی هنگام جمع آوری شناسه ها، حذف مقادیر تکراری یا بررسی عضویت یک عنصر در مجموعه کاربرد دارد.
تفاوت اصلی Set با ساختارهایی مانند List در نحوه مدیریت تکرارها و دسترسی به عناصر است. در List می توانید چند عنصر یکسان داشته باشید و ترتیب درج عناصر حفظ می شود، اما HashSet برای نگهداری عناصر یکتا طراحی شده و ترتیب مشخصی برای پیمایش آن تضمین نمی کند. انتخاب درست میان این ساختارها به نیاز برنامه بستگی دارد. اگر یکتا بودن داده ها اهمیت بیشتری از ترتیب آن ها داشته باشد، استفاده از HashSet می تواند راهکاری مناسب و ساده باشد.
کاربرد Stack و Queue و LinkedList در مدیریت داده ها
`Stack<T>` و `Queue<T>` دو کالکشن هستند که عناصر را با الگوهای متفاوتی مدیریت می کنند. Stack از اصل آخرین ورودی، اولین خروجی یا LIFO پیروی می کند؛ یعنی آخرین عنصری که اضافه شده، زودتر خارج می شود. Queue از اصل اولین ورودی، اولین خروجی یا FIFO استفاده می کند و عناصر را به ترتیب ورود پردازش می کند. برای مثال، Stack در پیاده سازی قابلیت بازگشت به عملیات قبلی و Queue در مدیریت صف کارها می تواند کاربرد داشته باشد.

`LinkedList<T>` ساختاری متفاوت برای نگهداری مجموعه ای از گره ها ارائه می دهد که هر گره به گره های مجاور خود متصل است. این ساختار در شرایطی که افزودن یا حذف گره ها در موقعیت های مشخص اهمیت دارد، می تواند مفید باشد؛ به ویژه زمانی که محل گره موردنظر از قبل در اختیار باشد. البته دسترسی به یک عنصر بر اساس اندیس در LinkedList مانند List مستقیم نیست. آشنایی با تفاوت این کالکشن ها کمک می کند بر اساس الگوی دسترسی و نوع تغییرات موردنیاز، انتخاب دقیق تری داشته باشید.
سرفصل مطالب آموزش ویدیویی آرایه ها و کالکشن ها در سی شارپ
فصل اول: مقدمه این دوره آموزشی- مقدمه
- مقدمه
- معرفی آرایه ها
- پیمایش کردن با حلقه های foreach
- جستجوی Item ها
- کنترل پیمایش کردن با حلقه for
- نمونه سازی یک آرایه بدون داده
- مقدار دهی کردن عناصر درون آرایه
- جمع بندی
- فصل سوم: یافتن داده ها در یک آرایه
- مقدمه
- یافتن عناصر با حلقه foreach
- یافتن عناصر با متد ()Find
- کلاس Array
- یافتن چندین آیتم با ()FindAll
- متد ()Exists برای جستجوی یک مقدار
- جمع بندی
- مقدمه
- تغییر اندازه یک آرایه با متد ()Resize
- مشکل متد ()Resize
- معرفی کلاس <List<T
- حذف آیتم ها با متد ()RemoveAt در کلاس <List<T
- حذف آیتم ها با متد ()RemoveAll در کلاس <List<T
- استفاداه کردن از List Initializer ها
- مقایسه لیست ها و آرایه ها
- جمع بندی
- مقدمه
- مشکل مربوط به متد ()Find
- دیکشنری چیست؟
- نمونه سازی یک دیکشنری
- جستجوی مقادیر با استفاده از یک کلید
- متد های ()TryGetValue و ()ContainsKey
- پیمایش دیکشنری ها
- بررسی کلاس SortedDictionary
- مجموعه SortedList
- جمع بندی
- مقدمه
- تفکیک کردن بخش های مختلف برنامه
- حل مسئله با متد ()Find
- اشتراک مجموعه ها
- اشتراک با متد <HashSet<T
- عملیات بیشتر HashSet ها (اجتماع و تفریق)
- داده های پیچیده: آرایه های چند بعدی و Jagged
- ذخیره سازی شبکه ای از داده ها
- نمونه سازی یک آرایه چند بعدی
- قرار دادن آرایه دو بعدی در یک کلاس
- پیمایش کردن آرایه دو بعدی
- آرایه های دندانه دار
- جمع بندی
- صف یا Queue چیست؟
- آموزش عملی: صف بندی کردن مسافران
- عملیات Dequeue و Enqueue
- معرفی یک Stack
- Push کردن و Pop کردن از یک Stack
- لیست پیوندی چیست؟
- ذخیره سازی داده ها در یک لیست پیوندی
- تکرار و حذف از یک لیست پیوندی
- اجرا کردن برنامه
- مزایا و معایب استفاده از لیست های پیوندی
- جمع بندی
- جمع بندی پایانی







