موضوعات وبسایت : برنامه نویسی
سوالات امتحان آیین نامه رانندگی

Generic list در سی شارپ

Generic list در سی شارپ

نویسنده : مینا علی زاده | زمان انتشار : 18 دی 1400 ساعت 21:09

جهت انجام پروژه های دانشجویی و یا تمرین‌های برنامه نویسی رشته کامپیوتر میتوانید به آی دی تلگرام زیر پیام دهید

@AlirezaSepand



مقدمه :

با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، با دوره کامل آموزش #C در خدمت شما دوستان هستیم . در بخش قبلی با مجموعه های Generic در زبان #C آشنا شدید. در این بخش قصد داریم شما را با مجموعه Generic List در #C و نحوه دسترسی به عناصر List در سی شارپ  آشنا کنیم.

سوالات امتحان آیین نامه رانندگی

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

پیاده سازی :

List را می توان با دو روش زیر تنظیم کرد.

مثال : 

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

//Or

IList<int>intList=newList<int>();

در مثال بالا، مجموعه ی List، در خط اول با استفاده از نوع List ، و خط دوم با استفاده از نوع IList تعریف و مقداردهی اولیه شده است.

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

مجموعه عمومی List شامل متدهای کمکی بیشتری نسبت به رابط IList است. جدول زیر لیست پراپرتی ها و متد های مهم مجموعه عمومی List را نشان می دهد :

پراپرتی ها :

توضیحاتپراپرتی
عنصری را در ایندکس مشخص وارد می کند و یا آن را برمی گرداند.Items
تعداد کل عناصر موجود در مجموعه عمومی List را بازمیگرداند.Count

متد ها :

توضیحاتمتد
یک عنصر در انتهای مجموعه عمومی List اضافه می کند.Add
عناصر مجموعه مشخص شده را در انتهای مجموعه عمومی List اضافه می کند.AddRange
عنصری را در مجموعه عمومی List جستجو و آن را باز می گرداند.BinarySearch
تمام عناصر را از List حذف می کند.Clear
بررسی اینکه آیا عنصر مشخص شده در List وجود دارد یا خیر.Contains
اولین عنصر را بر اساس تابع پیش فرض مشخص می کند.Find
تکرار از طریق یک مجموعه ListForeach
یک عنصر را در اندیس مشخص شده در List وارد می کند.Insert
عناصر مجموعه دیگری را در اندیس مشخص شده قرار می دهد.InsertRange
عنصر مشخص شده را حذف می کند.Remove
عنصر را از اندیس مشخص شده حذف می کند.RemoveAt
همه عناصر را از اندیس مشخص شده تا اندازه آن از مجموعه List حذف می کند.RemoveRange
تمام عناصر را مرتب می کند.Sort
ظرفیت را به اندازه تعداد واقعی عناصر تنظیم میکند.TrimExcess
تعیین می کند که آیا هر عنصر در List مطابق با شرایط تعریف شده توسط پیش فرض ، مشخص شده است.TrueForAll

متد Add :

از این متد برای اضافه کردن عنصر به مجموعه List استفاده مس شود . مثال زیر مقدار نوع int را به یک مجموعه List از نوع int اضافه می کند.

ساختار کلی :

void Add(T item)

مثال : 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

IList<int>intList=newList<int>();

intList.Add(10);

intList.Add(20);

intList.Add(30);

intList.Add(40);

IList<string>strList=newList<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=newList<Student>();

studentList.Add(newStudent());

studentList.Add(newStudent());

studentList.Add(newStudent());

شما همچنین می توانید عناصر را در هنگام تعریف ، مقداردهی اولیه کنید:

مثال : 

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

//Or

IList<Student>studentList=newList<Student>(){

                newStudent(){StudentID=1,StudentName="Bill"},

                newStudent(){StudentID=2,StudentName="Steve"},

                newStudent(){StudentID=3,StudentName="Ram"},

                newStudent(){StudentID=1,StudentName="Moin"}

            };

متد AddRange :

متد AddRange تمام عناصر را از مجموعه دیگری اضافه می کند.

ساختار کلی :

void AddRange(IEnumerable<T> collection)

مثال : 

IList<int>intList1=newList<int>();

intList1.Add(10);

intList1.Add(20);

intList1.Add(30);

intList1.Add(40);

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

intList2.AddRange(intList1);

توجه: متد AddRange تنها با متغیر نوع List مقداردهی اولیه می شود و IList شامل متد AddRange نیست.

دسترسی به عناصر List :

میتوان با استفاده متد ForEach موجود در List به عناصر مجموعه List دسترسی پیدا کرد.

مثال : 

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

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

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

مثال : 

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

foreach(varel inintList)

                Console.WriteLine(el);

مثال : 

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

for(inti=0;i<intList.Count;i++)

                Console.WriteLine(intList[i]);

خروجی :

همچنین میتوانید با استفاده از شماره ایندکس عنصری خاص به آن دسترسی داشته باشید.

مثال : 

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

intelem=intList[1];// returns 20

همچنین از پراپرتی Count برای دسترسی به تعداد عناصر موجود در لیست استفاده می کنیم.

مثال : 

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

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

خروجی :

مجموعه List با استفاده از IList تعریف شده است پس مجموعه List میتواند شامل همه انواع IList باشد.

مثال : 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

staticvoidPrint(IList<string>list)

{

                Console.WriteLine("Count: {0}",list.Count);

                foreach(stringvalue inlist)

    {

                Console.WriteLine(value);

    }

}

staticvoidMain(string[]args)

{

                string[]strArray=newstring[2];

    strArray[0]="Hello";

    strArray[1]="World";

    Print(strArray);

                List<string>strList=newList<string>();

    strList.Add("Hello");

    strList.Add("World");

    Print(strList);

}

خروجی :

مثال : 

Count:2

Hello

World

Count:2

Hello

World

متد Insert :

متد Insert یک عنصر را در مجموعه List در اندیس مشخص شده وارد می کند.

ساختار کلی :

void Insert(int index, T item);

مثال : 

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

intList.Insert(1,11);// inserts 11 at 1st index: after 10.

foreach(varel inintList)

                Console.Write(el);

خروجی :

متد Remove  و  RemoveAt :

متدهای Remove و RemoveAt موارد را از مجموعه List حذف می کنند.

مثال : 

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

intList.Remove(10);// removes the 10 from a list

intList.RemoveAt(2);//removes the 3rd element (index starts from 0)

foreach(varel inintList)

                Console.Write(el);

خروجی :

متد TrueForAll :

TrueForAll یک متد از کلاس List است. اگر شرط مشخص شده به درستی بیان می شود، true ، در غیر این صورت false را برمی گرداند . در اینجا، شرایط را می توان به عنوان نوع پیش فرض delegate یا عبارت lambda مشخص کرد.

ساختار کلی :

bool TrueForAll(Predicate<T> match)

مثال : 

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

boolres=intList.TrueForAll(el=>el%2==0);// returns true

مثال زیر با استفاده از متد isPositiveInt برای استفاده از TrueForAll بیان شده است.

مثال : 

staticboolisPositiveInt(inti)

{

                returni>0;

}

staticvoidMain(string[]args)

{

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

                boolres=intList.TrueForAll(isPositiveInt);

}

چند نکته جهت بخاطر سپردن :

  1. مجموعه List عناصر نوع مشخص شده را ذخیره می کند و اندازه آن به طور خودکار تغییر می کند.
  2. مجموعه List می تواند چند عنصر null و تکراری را ذخیره کند.
  3. مجموعه List را می توان به نوع IList یا List اختصاص داد. اگر از نوع List استفاده شود شامل متدهای کمکی بیشتری نسبت به IList خواهد بود.
  4. در مجموعه List می توان با استفاده از indexer، توسط متد foreach به عناصر آن دسترسی پیدا کرد.
  5. در LINQ می توان برای پرس و جو های خود از مجموعه List استفاده کرد.
  6. مجموعه List ایده آل برای ذخیره و بازیابی تعداد زیادی از عناصر است.

در این قسمت با مجموعه عمومی List در #C آشنا شدید ، در قسمت بعدی قصد داریم شما را با مجموعه ی عمومی دیگر در #C به نام SortedList آشنا کنیم.

loading.gif

آیا این مطلب برای شما مفید بود؟


منبع: pvlearn.com



ارسال نظر

نام


ایمیل


نظر