+1 امتیاز
قبل در برنامه نویسی توسط (505 امتیاز)
برچسب گذاری دوباره قبل توسط

Generic List در C# چیست؟

آیا ما کلاس Generic هم داریم؟؟

خودم یه مثال پیدا کردم:

public class MyGenericArray<T>
    {
        private T[] array;
        public MyGenericArray(int size)
        {
            array = new T[size + 1];
        }
        public T getItem(int index)
        {
            return array[index];
        }
        public void setItem(int index, T value)
        {
            array[index] = value;
        }
    }

2 پاسخ

+2 امتیاز
قبل توسط (868 امتیاز)

در قدیم برای طراحی یک لیست از شی داده های متفاوت مجبور بودیم از ارایه ها استفاده کنیم.ارایه ها برای Value Type ها مشخص بودن مثل int[] ، string[] ... ولی وقتی میخویم یه ارایه یا در واقع لیستی از کلاس هایی یا دراقع شی هایی از Reference Type هاداشته باشیم ، میومدیم و یه ارایه از Object درست میکردیم ، که این مشکلات زیادی داشت ، مثلا وقتی یه ارایع از Object داریم هر شیی با هر نوعی میتونیم توش بزاریم پس باید کلی وقت میزاشتیم و چک میکرردیم ببینیم که فقط یه نوع مقدار واردش بشه و ...

بعد اومدن و توی C# 2 ک سال 2005 معرفی شد ، Generic ها رو معرفی کردن ، Generic ها Type SAfe رو برای مافراهم کردن ، وقتی یه لیست جنریک میسازی ، کامپایلر یا در واقع C# بتون این اطمینان رو میده که تمام اعضای ورودی به لیست همه از یه نوع که خودتون توی تعریف لیست اعلام کردین هستن.همچنین لیست جنریک به ما IEnumerable میده که این ویژگی اینو در اختیار ما قرار میده که از Queryهای Linq روی اون بتونیم بهره مند بشیم.

 

var li = new List<class1>();
var li = new List<int32>();
var li = new List<String>();


کلاس های جنریک هم داریم ، جنریک ها به ما در حل مشکل بازنویسی و زیاد نویسی کمک میکنن ، فرض کنید چنتا کلاس متفاوت داریم ، که همه کار های مشترکی میکنن ، ولی فقط نوعشون فرق داره ، خوب بدون Generic ها ، ما باید برای هر کدومشون تووابع و کدهای یکسان رو مینوشتیم و این یعنی تکرار که باعث بالا رفتن حجم کد ، خطایابی سخت ، هدر رفتن زمان میشه ولی با Generic ها این مشکل حل شد ،  با این روش که شما یه ککلاس جنریک با اون متدهای مشترک میسازی ، و فقط نوع اون کلاسو بش پاس میدی. :)

+1 امتیاز
قبل توسط (1.6هزار امتیاز)
ویرایش شده قبل توسط

سوال خیلی کلی مطرح شده، سعی می کنم مفهوم رو برسونم.
در درس های ساختمان داده مسائلی در پیاده سازی STACK و Linked List را با استفاده از پوینتر و آرایه و آرایه های پوینتری حل نموده ایم، . اما در .NET FrameWork با ورود Generic data type کار با پوینتر ها بسیار راحت تر شده است، در اصل دیگر مدیریت پوینترهابر عهده .NET FrameWork قرار گرفته است. در ادامه با یک مثال  ساده بحث را تکمیل می نمایم:

کلاس :

public class Person
    {
        public string FullName { get; set; }
        public int Age { get; set; }

        public override string ToString()
        {
            return string.Format("My name is {0} and I am {1} years old", FullName, Age);
        }
    }

 

فراخوانی در برنامه اصلی:

internal class Program
    {
        private static void Main(string[] args)
        {
            
            var people = new System.Collections.Generic.List<Person>();

            people.Add(new Person { FullName = "Name1", Age = 33 });
            people.Add(new Person { FullName = "Name2", Age = 32 });
            people.Add(new Person { FullName = "Name3", Age = 62 });

            System.Console.ReadKey();
        }
    }

توجه داشته باشید:

System.Collections.Generic.List<هرنوع داده ای<

سوالات مشابه

+1 امتیاز
1 پاسخ 687 بازدید
0 امتیاز
0 پاسخ 440 بازدید
+1 امتیاز
1 پاسخ 2.0هزار بازدید
0 امتیاز
1 پاسخ 871 بازدید
0 امتیاز
1 پاسخ 500 بازدید
0 امتیاز
0 پاسخ 455 بازدید
سوال شده 9 سال قبل در برنامه نویسی توسط morteza (20 امتیاز)
0 امتیاز
1 پاسخ 1.0هزار بازدید
0 امتیاز
1 پاسخ 1.8هزار بازدید
سوال شده 10 سال قبل در برنامه نویسی توسط morteza (20 امتیاز)
0 امتیاز
1 پاسخ 558 بازدید
سوال شده 10 سال قبل در برنامه نویسی توسط morteza (20 امتیاز)
...