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

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




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

نام تاپيک: آیا این کد سودمندی دارد؟

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

    11 آیا این کد سودمندی دارد؟

    درود و سلام:
    به نظرتون آیا استفاده از این کد سودمندی برای ما دارد؟

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    استفاده از آن:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

    دقیقا بر عکس این هم امکان دارد. تعریف کلاس درون ساختار.
    Last edited by iranch; 23-07-2015 at 00:14.

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


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

    پيش فرض

    سلام
    بله، قابیت جالبی در دات نت است.
    دقت کنید که این شیوه کار هیچ تفاوتی در مدل حافظه و مباحث شی گرایی و... ایجاد نمیکند فقط نوعی namespace بندی ویژه است.

    کاربرد مناسب این قابلیت مشابه امکان تعریف توابع Private است، مگر اگر همه توابع Private را Public کنیم، باز پروژه کار نخواهد کرد؟ چرا نباید همه توابع را Public یا Internal تعریف کرد؟

    این هم خیلی شبیه است ضمن اینکه این ساختار های تودرتو به تمام عناصر (حتی Private) ساختار بالاسری خود دسترسی دارند.

    شما میتوانید ساختارهایی را داخل بدنه ساختار دیگر تعریف کنید و حوضه دید های کامل پنجگانه دات نت را به آنها اعمال کنید، بطور نمونه آنها را Private کنید تا فقط توسط ساختار بالاسری قابل استفاده باشند. (یک تعریف خصوصی و محدود به همان محل)

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    موفق باشید.

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


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

    پيش فرض

    به نظر خودم این کار ضرر هم دارد.ببنید من میخواهم این کلاس رو به عنوان پارامتر یفرستم برای یک تایع. خوب اگر کلاس باشد ، ادرس کپی میشود و خلاص.
    اما در اینجا قسمت ساختار ، کپی میشود.

  6. این کاربر از iranch بخاطر این مطلب مفید تشکر کرده است


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

    پيش فرض

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

    دوم میرسیم که پاسخ:
    الف) دقیقا کپی شدن هرباره struct ها یک ویژگی خاص است که در محل مناسب میتواند مزیت باشد.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    اگر int یک class بود، x و y هر دو 128 میشدند و ما همچین چیزی نمی خواهیم، اگر کمی دقت کنید، بسیار حالات و شرایط وجود دارد که راحتی و تضمین برنامه ما بر این است که هربار کپی جدیدی ایجاد شود.

    ب) struct ها نیاز به تخصیص پویا و پاک سازی پویا ندارند (Garbage Collector)
    اشیایی که در هیپ میسازید چون در محل نامشخ new میشوند و هربار هم آدرس کپی میشود، پس باید روشی برای آزاد سازی حافظه آنهایی که دیگر نیازی به آنها نیست داشته باشیم...
    سه روش مشخص برای پاک سازی اشیا هیپ وجود دارد...
    1) دستور پاک سازی (برعکس new) و بطور کامل به مسئولیت برنامه نویس (مشابه ++C و دستور delete)
    2) شمارش تعداد ارجاعات (افزایش و کاهش عددی برای هربار کپی آدرس شی به متغییر جدید) و پاک سازی در صفر شدن تعداد ارجاعات (مشابه اشیا COM)
    3) شمارش درلحظه از تعداد ارجاعات به یک شی توسط سرکشی ریسمانی خاص و پاک سازی اشیای فاقد ارجاع (مشابه [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] و Java)

    همه این اگوریتم ها با دشواری ها و هزینه های گوناگونی همراه است ضمن اینکه بترتیب از اول تا سوم همواره احتمال خطا و نشت حافظه وجود دارد.

    ج) تخصیص و پاک سازی پویا اشیا در هیپ موجب fragment شدن RAM میشود، در واقع حافظه تکه تکه میشود و حالتی رخ میدهد که شاید از لحاظ جمع ریاضی حافظه داشته باشید ولی حافظه یک تکه بزرگ برای آرایه یا شی دیگری نداشته باشید و دچار کمبود حافظه شوید.
    این مورد در دات نت به کمک ماژول و ریسمانی جهت defrag کردن RAM حل شده و این هم یعنی باز هزینه برای یکپارچه سازی هیپ و هزینه مخفی دیگری به جهت اشاره گر های دو مرحله ای (**void)
    (دقت کنید که fragment شدن هارددیسک موجب کندی میشود ولی fragment شدن RAM موجب خطا کمبود حافظه میشود)

    و...

    class جای خود را دارد و struct هم جای خود، تشخیص صحیح استفاده از هریک میتواند خیلی به برنامه شما کمک کند.
    موفق باشید

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


Thread Information

Users Browsing this Thread

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

User Tag List

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

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