ژوئن 28, 2019 Mostafa بدون دیدگاه

اگر دنبال برنامه نویس برای ساخت افزونه ،قالب،سایت،برنامه ویندوز،اپلیکیشین اندروید،ربات تلگرام و.... هستید ،سفارش برنامه نویسی را مطالعه نمایید.

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

در فصل های قبل مطالبی را در مورد ArrayList آموختید. یک ArrayList زمانی که مقداری به آن افزوده می‌شود، اندازه خود را افزایش می‌دهد. کالکشن <List<T عملکردی شبیه ArrayList دارد. با این حال <List<T یک کالکشن جنریک بوده و ArrayList یک کالکشن غیر جنریک است.

<List<T را می توان به دو روش زیر تعریف و نمونه سازی کرد :

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

//یا

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

در نمونه مثال بالا اولین عبارت از متغیری با نوع List استفاده می کند و این در حالی است که عبارت دوم از متغیری با نوع IList بهره می برد. <List<T اینترفیس <IList<T را پیاده سازی می کند. در برنامه نویسی به روش شی گرایی پیشنهاد میشود از اینترفیس ها به جای نوع های واقعی استفاده شود. این مورد می تواند در تست و نگهداری برنامه ها کمک قابل توجهی به ما بکند. بنابراین از <IList<T برای تعریف شی ایی از نوع <List<T استفاده کنید.

اضافه کردن عناصر به لیست

از متد ()Add برای افزودن مقادیر به کالکشن مورد نظر خود استفاده کنید. نمونه مثال زیر مقادیر اعداد صحیح را به لیستی از نوع int اضافه می‌کند :

IList<int> intList = new List<int>();
intList.Add(10);
intList.Add(20);
intList.Add(30);
intList.Add(40);

IList<string> strList = new List<string>();
strList.Add("one");
strList.Add("two");
strList.Add("three");
strList.Add("four");
strList.Add("four");
strList.Add(null);
strList.Add(null);

IList<Student> studentList = new List<Student>();
studentList.Add(new Student());
studentList.Add(new Student());
studentList.Add(new Student());

همچنین شما می توانید مقادیر را در زمان نمونه‌سازی به لیست خود اضافه کنید :

IList<int> intList = new List<int>(){ 10, 20, 30, 40 };

//Or

IList<Student> studentList = new List<Student>() { 
                new Student(){ StudentID=1, StudentName="Bill"},
                new Student(){ StudentID=2, StudentName="Steve"},
                new Student(){ StudentID=3, StudentName="Ram"},
                new Student(){ StudentID=1, StudentName="Moin"}
            };

متد ()AddRange

با استفاده از متد ()AddRange می توان همه عناصر یک کالکشن را به کالکشن دیگری اضافه کرد. در نمونه مثال زیر مقادیر کالکشن intList1 به کالکشن intList2 اضافه شده است:

IList<int> intList1 = new List<int>();
intList1.Add(10);
intList1.Add(20);
intList1.Add(30);
intList1.Add(40);

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

intList2.AddRange(intList1);

نکته : متد ()AddRange تنها بر روی کالکشن هایی با نوع <List<T کاربرد دارد. در اینجا نمی توان از <IList<T استفاده نمود.

دسترسی به عناصر لیست

با استفاده از متد ForEach و به شکل زیر میتوان آیتم های یک لیست را پیمایش کرد :

List<int> intList = new List<int>() { 10, 20, 30 };

intList.ForEach(el => Console.WriteLine(el));

اگر شما از نوع داده ای <IList<T برای متغیر خود استفاده کرده باشید از حلقه foreach به شکل زیر برای پیمایش استفاده کنید :

IList<int> intList = new List<int>() { 10, 20, 30, 40 };

foreach (var el in intList)
                Console.WriteLine(el);

خروجی :
۱۰ 
۲۰ 
۳۰ 
۴۰

میتوان به عناصر موجود در لیست با استفاده از مقادیر index دسترسی پیدا کرد :

IList<int> intList = new List<int>() { 10, 20, 30, 40 };

int elem = intList[1]; // returns 20

برای به دست آوردن تعداد عناصر لیست می‌توان از مشخصه Count استفاده کرد :

IList<int> intList = new List<int>() { 10, 20, 30, 40 };

Console.Write("Total elements: {0}", intList.Count);

خروجی :
Total elements: 4

میتوان از حلقه for برای دسترسی به عناصر آرایه به شکل زیر استفاده نمود :

IList<int> intList = new List<int>() { 10, 20, 30, 40 };

for (int i = 0; i < intList.Count; i++)
Console.WriteLine(intList[i]);

خروجی :
۱۰ 
۲۰ 
۳۰ 
۴۰

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

static void Print(IList<string> list)
{
                Console.WriteLine("Count: {0}", list.Count);
                foreach (string value in list)
    {
                Console.WriteLine(value);
    }
}

static void Main(string[] args)
{

                string[] strArray = new string[2];
    strArray[0] = "Hello";
    strArray[1] = "World";
    Print(strArray);

                List<string> strList = new List<string>();
    strList.Add("Hello");
    strList.Add("World");
    Print(strList);
}



خروجی :
Hello 
World 
Hello 
World

افزودن عناصر به لیست

با استفاده از متد ()Insert می توان مقادیر را به لیست مورد نظر اضافه کرد :

IList<int> intList = new List<int>(){ 10, 20, 30, 40 };
intList.Insert(1, 11);
foreach (var el in intList)
Console.Write(el);


خروجی :
۱۰ 
۱۱ 
۲۰ 
۳۰ 
۴۰

حذف عناصر از لیست

با استفاده از متدهای ()Remove و ()RemoveAt می توان مقادیر را از یک کالکشن <List<T حذف کرد :

IList<int> intList = new List<int>(){ 10, 20, 30, 40 };

intList.Remove(10);

intList.RemoveAt(2); 

foreach (var el in intList)
Console.Write(el);

خروجی :
۲۰ 
۳۰

متد ()TrueForAll

()TrueForAll متدی از کلاس <List<T است. این متد مقدار true را در صورتی که شرط موردنظر صحیح باشد بر می گرداند و در غیر این صورت مقدار بازگشتی false خواهد بود :

List<int> intList = new List<int>(){ 10, 20, 30, 40 };
bool res = intList.TrueForAll(el => el%2 == 0);// returns true

در نمونه مثال بالا در صورتی که مقادیر موجود در لیست همگی بر ۲ بخش پذیر باشند، مقدار true برگردانده میشود. این متد همچنین می تواند یک متد را به عنوان delegate دریافت کند :

static bool isPositiveInt(int i)
{
                return i > 0;
}

static void Main(string[] args)
{
                List<int> intList = new List<int>(){10, 20, 30, 40};

                bool res = intList.TrueForAll(isPositiveInt);

}

 


برچسب ها