تفاوت بین List و IList در سی شارپ چیست ؟

List و IList برای نشان دادن مجموعه ای از اشیاء استفاده می شود و می توانند اشیایی از Int ، string و ... را ذخیره کنند. متد هایی برای Insert ، Remove ، Search و Sort عناصر یک List و IList وجود دارد.


تفاوت بزرگ بین List و Ilist در این است که ، List یک Concreate class است و IList یک Interface است.
روی هم رفته ، List یک نوع Concreate است که رابط IList را پیاده سازی میکند.


List چیست ؟
List یک کلاس است که Interface های مختلفی را پیاده سازی میکند. شما میتوانید یک Object از <List<T ایجاد کنید و آن را به هر یک از متغیر های نوع Interface آن نسبت دهید.
بعلاوه، امکان ایجاد یک شی از List به صورت زیر است :

List<int> intList = new List<int>();

شی List بالا میتواند لیستی از اعداد صحیح را ذخیره کند.

Class Program
{
	Static void Main()
	{
		List<int> obj = new List<int>();
		obj.Add(1);
		obj.Add(2);
		obj.Add(3);
		obj.Add(4);
		obj.RemoveAt(2);
		foreach(var num in obj)
			console.write(num + “ ”);
	}
}

در برنامه بالا، obj یک شی از نوع List است. متد Add برای اضافه کردن مقادیر به List است. با استفاده از obj.RemoveAt(2) عنصری که ایندکس 2 دارد را حذف میکند. بنابراین عنصر 3 از List حذف می شود. درنهایت حلقه foreach تمام عنصر موجود در List را چاپ میکند.


امکان ایجاد یک شی از IList به صورت زیر است :

IList<int> intList = new List<int>();

<List<T  پیاده سازی مشخصی از رابط <IList<T است. در OOP، استفاده از Interface ها نسبت به Concreate Class ها یک روش برنامه نویسی خوب است. بنابراین میتوانید با استفاده از متغیر از نوع <IList<T برای ایجاد شی از <List<T استفاده کنید.

Class Program
{
	Static void Main()
	{
		IList<int> obj = new List<int>();
		obj.Add(10);
		obj.Add(20);
		obj.Add(30);
		obj.Add(40);
		obj.RemoveAt(2);
		foreach(var num in obj)
			console.write(num + “ ”);
	}
}

تفاوت بین List و IList


List یک کلاس است که لیستی از اشیاء را نشان میدهد که میتوان از طریق Index به آن ها دسترسی پیدا کرد در حالی که IList یک Inteface است که مجموعه ای از اشیاء را نشان میدهد که به صورت جداگانه توسط Index قابل دسترسی هستند.


نکته :
* پس تفاوت اصلی بین List و IList در این است که List یک کلاس است و IList یک Interface است.
* <List<T متد های کمکی بیشتری نسبت به <IList<T دارد.