یک راهنمای خوب برای مجموعه ها در سی شارپ
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 تکامل یافتهاند، با ژنریکها که قدرت و انعطافپذیری بیشتری را اضافه میکنند. این ابزارها به ما کمک می کنند کدهای تمیزتر و کارآمدتر بنویسیم. به یاد داشته باشید، انتخاب مجموعه مناسب میتواند مدیریت کد شما را آسانتر و کارآمدتر کند. بنابراین، این گزینه ها را بررسی کنید و بهترین مناسب را برای نیازهای خود پیدا کنید.
اگر فکر یا حکایت کدنویسی خندهداری برای به اشتراک گذاشتن دارید، نظر خود را در زیر بنویسید. بیایید گفتگو را ادامه دهیم!
و به یاد داشته باشید، آرام باشید و کد را ادامه دهید! 😄👨💻👩💻