تبلیغات :
آکوستیک ، فوم شانه تخم مرغی، صداگیر ماینر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 2 از 2

نام تاپيک: تفاوت List با Array با ArrayList

  1. #1
    آخر فروم باز
    تاريخ عضويت
    Nov 2009
    پست ها
    1,257

    پيش فرض تفاوت List با Array با ArrayList

    با سلام و درود و تبریک سال نودوستان میشه یک مثال و توضیح در مورد تفاوت این سه ساختمان داده List با Array با ArrayList در سی شارپ داشته باشیم؟ سرچ زدم اما این سه تا رو دقیقا با هم قیاس نکردند تا بفهمیم خوب.
    البته یک چیزهایی فهمیدم اینکه Array سایزشون ثابت هست. اینکه جنریک نیستند و فقط یک Type میشه بهش داد و گرفت ازش.
    ممنون
    Last edited by iranch; 20-03-2018 at 14:55.

  2. #2
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    از این فرصت استفاده میکنم و نوروز را به تمام دوستان در این سایت تبریک عرض میکنم.

    آرایه ها داده های پایه ای ذخیره انبوه و پشت سر هم اطلاعات در RAM هستند.
    هر دو ساختار List و ArrayList در داخل خود برای ذخیره سازی از Array استفاده میکنند.
    پس مشخص است که سرعت و بازدهی کار کردن با Array بیشتر از ساختارهای مشابه ای مانند List و ArrayList است.
    اما نکته منفی آرایه ها وجود شرط "طول ثابت و مشخص" شان است.
    در زمان نمونه سازی (New) باید طول را بدهید و دیگر هم نمی توانید تغییرش دهید.

    وجود همین یک شرط باعث میشود، استفاده مستقیم آنها برای اغلب بخش ها سخت باشد.
    مانند نگهداری اطلاعات دانش آموزان یا کتاب ها یا کارمندان و... و... چون در عمل هیچکدام طول ثابت و مشخص ندارند.

    و لزوم کدنویسی جهت ساخت کلاس هایی مانند List و ArrayList مطرح میشود تا طول بتواند متغییر باشد.

    این کلاس ها ابتدا یک آرایه کوچک را نمونه سازی (New) میکنند و شروع به پر کردن آن میکنند و هر زمان پر شد، آرایه بزرگتری می سازند و کل عناصر آرایه قدیم را در آرایه جدید کپی میکنند و آرایه قدیم را دور ریخته و از آرایه بزرگتر جدید استفاده میکنند.

    مثلا:
    خودشان خودکار در ابتدا آرایه 10 عنصری می سازند...
    این 10 میشود capacity فهرست که با count تفاوت دارد.
    با هر Add کردن مقدار count افزایش می یابد و خانه های آرایه یکی پس از دیگری پرشده و استفاده میشوند.
    تا وقتی که count به capacity برسد و آرایه مرکزی پر شود.
    مثلا در مثال ، ما بخواهیم 11 امین عنصر را Add کنیم.
    اینجاست که کلاس مذکور یک آرایه جدید 20 عنصری را New میکند و تمام عناصر قبلی را از آرایه قبلی در جدید کپی کرده و آرایه قبلی را دور میریزد.
    (در واقع capacity را افزایش میدهد)
    مجدد روز از نو و روزی از نو !
    شروع به پرکردن خانه های آرایه 20 عنصری میکند...


    *** به عنوان یک تمرین بسیار خوب برنامه نویسی، خودتان هم میتوانید یک List یا ArrayList بنویسید ***

    اما تفاوت List و ArrayList ...
    ArrayList جنریکی نیست و همواره آرایه object ای می ساز و object میگیرد و میدهد، هر چیزی درونش جا میشود ولی نمیتوانید نوع را مشخص کنید (برای struct ها هم باید هزینه boxing و unboxing را بپردازید)

    ولی

    List جنریکی است و اجازه میدهد که شما بگویید آرایه مرکزی اش را از چه نوعی بسازد و چه نوعی را بگیرد و تحویل دهد.
    در واقع ArrayList در عمل همان <List<object است و در عمل بجای هم قابل استفاده هستند.
    درکل بدلیل جنریکی بودن، کلاس List منعطف تر است و باعث خطای برنامه نویسی کمتری میشود و حتی کمی سریعتر است.

    موفق باشید.

  3. 2 کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده اند


Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •