
List<T> یکی از پرکاربردترین کلاسهای generic collection در سیشارپ است که در فضای نام System.Collections.Generic قرار دارد.
معرفی کلی
List<T> یک لیست پویا و type-safe است که میتواند عناصر از نوع T را ذخیره کند.
مثال:
using System.Collections.Generic; // ایجاد یک لیست از اعداد صحیح List<int> numbers = new List<int>(); // ایجاد یک لیست از رشتهها List<string> names = new List<string>();
ویژگیهای کلیدی
1. پویا بودن سایز
نیازی به تعیین اندازه اولیه نیست
به طور خودکار هنگام نیاز گسترش مییابد
2. Type Safety
فقط عناصر از نوع T را میپذیرد
از خطاهای نوع در زمان کامپایل جلوگیری میکند
List<string> fruits = new List<string>(); // Add - افزودن در انتها fruits.Add("Apple"); fruits.Add("Banana"); // AddRange - افزودن چند عنصر fruits.AddRange(new[] {"Orange", "Mango"}); // Insert - درج در موقعیت خاص fruits.Insert(1, "Grape"); // در index = 1
// Remove - حذف اولین occurrence fruits.Remove("Apple"); // RemoveAt - حذف با index fruits.RemoveAt(0); // RemoveAll - حذف با شرط fruits.RemoveAll(f => f.StartsWith("A")); // Clear - حذف همه عناصر fruits.Clear();
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 }; // دسترسی با index int first = numbers[0]; // 1 // Contains - بررسی وجود bool hasThree = numbers.Contains(3); // true // IndexOf - پیدا کردن index int index = numbers.IndexOf(4); // 3 // Find - پیدا کردن با شرط int even = numbers.Find(n => n % 2 == 0); // 2 // FindAll - پیدا کردن همه با شرط List<int> evens = numbers.FindAll(n => n % 2 == 0);
// Count - تعداد عناصر int count = numbers.Count; // Sort - مرتبسازی numbers.Sort(); // Reverse - معکوس کردن ترتیب numbers.Reverse(); // ForEach - اجرای عمل بر روی هر عنصر numbers.ForEach(n => Console.WriteLine(n));
مزایای List<T>
انعطافپذیری: اندازه پویا
کارایی: دسترسی سریع با index (O(1))
امنیت نوع: جلوگیری از خطاهای نوع
قابلیت LINQ: پشتیبانی کامل از LINQ
متدهای کمکی: دارای متدهای کاربردی زیاد
معایب و محدودیتها
حذف/درج در میانه: کند است (O(n))
مصرف حافظه: ممکن است بیشتر از نیاز حافظه رزرو کند

نکات مهم
همیشه با فضای نام System.Collections.Generic کار میکند
برای انواع value type، boxing/unboxing ندارد
thread-safe نیست (برای محیطهای multithreading نیاز به synchronization دارد)
میتواند به عنوان پارامتر ورودی و خروجی متدها استفاده شود
List<T> بهترین انتخاب برای اکثر سناریوهایی است که نیاز به مجموعهای پویا از دادههای همنوع دارید. ترکیب type safety با انعطافپذیری و متدهای کمکی آن را به یکی از پرکاربردترین ساختارهای داده در سیشارپ تبدیل کرده است.
Telegram: @CaKeegan
Gmail : amidgm2020@gmail.com