برنامه نویسی

یک راهنمای خوب برای مجموعه ها در سی شارپ

https://www.youtube.com/watch?v=4H0gabAtouE

.

آه، مجموعه ها در سی شارپ. این کمی شبیه سازماندهی کشوی جوراب است، اینطور نیست؟ شما با یک آرایه ساده شروع می کنید و سپس متوجه می شوید که برای مدیریت هرج و مرج به چیزی کمی پیچیده تر نیاز دارید. امروز، ما به دنیای شگفت انگیز مجموعه ها در سی شارپ می پردازیم و یاد می گیریم که چگونه کد خود را تا حد امکان مرتب و مرتب نگه داریم. بنابراین، برای خود یک فنجان خوب دم کنید، بنشینید و بیایید شروع کنیم! ☕

آغاز فروتن: آرایه ها

در روزهای اولیه دات نت، ما فقط آرایه داشتیم. ساده، سرراست، اما کمی سفت و سخت، مانند تلاش برای فشار دادن به آن شلوار جین قدیمی از یونی. در اینجا نحوه ظاهر یک آرایه در ابتدایی ترین شکل آن آمده است:

int[] ints = {1, 2, 3};
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

تکرار از طریق یک آرایه یک تکه کیک با یک است for حلقه:

for (int i = 0; i < ints.Length; i++)
{
    Console.WriteLine(ints[i]);
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

با این حال، افزودن یا حذف عناصر؟ کابوس مطلق هر بار باید یک آرایه کاملاً جدید ایجاد کنید. مثل این است که هر بار که یک جفت جوراب جدید می گیرید مجبور شوید یک کمد لباس جدید بخرید. ایده آل نیست. بنابراین، چگونه این را بهبود دهیم؟ وارد IEnumerator.

Enumerator را وارد کنید: IEnumerator

IEnumerator قهرمانی است که برای تکرار در مجموعه‌ها بدون دردسر مدیریت دستی موقعیت به آن نیاز داریم. از سه بخش اصلی تشکیل شده است: Current، MoveNext، و Reset.

  • Current به عنصر فعلی در مجموعه اشاره می کند.
  • MoveNext به عنصر بعدی می رود.
  • Reset موقعیت را بازنشانی می کند.

در اینجا نگاهی گذرا به نحوه عملکرد آن می پردازیم:

IEnumerator enumerator = ints.GetEnumerator();
while (enumerator.MoveNext())
{
    Console.WriteLine(enumerator.Current);
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

The Iterable Fellow: IEnumerable

زمانی که یک مجموعه ارث می برد قابل شمارش، می گوید، “هی، شما می توانید از طریق عناصر من با استفاده از شماره IE تکرار کنید.” این یک رابط فقط خواندنی است، به این معنی که نمی توانید عناصر را مستقیماً اضافه یا حذف کنید. این مانند یک تور با راهنما است که می توانید در آن نگاه کنید اما لمس نکنید.

public class MyCollection: IEnumerable
{
    private int[] _array = {1, 2, 3};

    public IEnumerator GetEnumerator()
    {
        return _array.GetEnumerator();
    }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

گردآورنده: ICollection

برای رفع محدودیت های IEnumerable، مایکروسافت معرفی کرد ICollection. از IEnumerable به ارث می رسد و قابلیت هایی مانند Count و CopyTo. با این حال، هنوز اجازه اضافه کردن یا حذف موارد را نمی دهد. آن را به عنوان یک ویترین فانتزی در نظر بگیرید، می توانید مجموعه های خود را بشمارید، اما نمی توانید به راحتی موارد جدید را بدون تلاش اضافه کنید.

public class MyCollection : ICollection
{
    private List<int> _list = new List<int> {1, 2, 3};

    public int Count => _list.Count;

    public void CopyTo(Array array, int index)
    {
        _list.CopyTo((int[])array, index);
    }

    public IEnumerator GetEnumerator()
    {
        return _list.GetEnumerator();
    }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

همه جانبه: IList

اکنون، IList وارد بازی، ارث بردن از ICollection و به ما این امکان را می دهد که عناصر را با فهرست اضافه کنیم، حذف کنیم و به آنها دسترسی داشته باشیم. این مجموعه چاقوی ارتش سوئیس است – همه کاره و مفید برای انواع کارها.

public class MyCollection : IList
{
    private List<int> _list = new List<int> {1, 2, 3};

    public int this[int index] 
    { 
        get => _list[index]; 
        set => _list[index] = value; 
    }

    public void Add(int value)
    {
        _list.Add(value);
    }

    public void Remove(int value)
    {
        _list.Remove(value);
    }

    // Other IList members...
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

Generic Delight: IList

تیم DotNet همچنین برای ایمنی نوع و انعطاف‌پذیری، ژنریک‌ها را به این رابط‌ها معرفی کرد. با IList، می توانید مجموعه هایی ایجاد کنید که نوع خاص هستند و از خطاهای زمان اجرا مزاحم اجتناب کنید.

List<int> list = new List<int> {1, 2, 3};
list.Add(4);
Console.WriteLine(list[0]);
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

The Trusty Dictionary: IDicionary

در نهایت، وجود دارد لغت نامه، که امکان ذخیره جفت های کلید-مقدار را فراهم می کند. ایده آل برای مواقعی که نیاز دارید داده های خود را کارآمدتر سازماندهی کنید.

IDictionary<int, string> dictionary = new Dictionary<int, string>
{
    {1, "One"},
    {2, "Two"},
    {3, "Three"}
};
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

خلاصه

به طور خلاصه، مجموعه‌ها در سی شارپ از آرایه‌های ساده به ساختارهای پیچیده‌تری مانند IEnumerable، ICollection و IList تکامل یافته‌اند، با ژنریک‌ها که قدرت و انعطاف‌پذیری بیشتری را اضافه می‌کنند. این ابزارها به ما کمک می کنند کدهای تمیزتر و کارآمدتر بنویسیم. به یاد داشته باشید، انتخاب مجموعه مناسب می‌تواند مدیریت کد شما را آسان‌تر و کارآمدتر کند. بنابراین، این گزینه ها را بررسی کنید و بهترین مناسب را برای نیازهای خود پیدا کنید.

اگر فکر یا حکایت کدنویسی خنده‌داری برای به اشتراک گذاشتن دارید، نظر خود را در زیر بنویسید. بیایید گفتگو را ادامه دهیم!

و به یاد داشته باشید، آرام باشید و کد را ادامه دهید! 😄👨‍💻👩‍💻

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا