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

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




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

نام تاپيک: ما این طور اشتباه یاد گرفتیم!!

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

    14 ما این طور اشتباه یاد گرفتیم!!

    سلام

    خسته نباشید عزیزان برنامه نویس
    DriveInfo[] allDrives = DriveInfo.GetDrives();
    اینجا آرایه ای از نوع DriveInfo رو تعریف کرده. به نام allDrives
    یعنی هر خانه از allDrives از نوع DriveInfo هست.طبق تعریف و کتابی قضیه من همیشه این طور می نویسم و براش حافظه می گرفتم.

    DriveInfo[] allDrives2 = new DriveInfo();
    حالا تعریف بالا ارور داره به خاطر پارامتر ندادن بهش اما من منظورم کلی هست.
    اما اینکه میاد بدون اینکه حافظه براش بگیره و new کنه ، میاد تابع GetDrives() رو داخلش میریزه. یعنی چی؟!!!
    یعنی چه مقداری توش ریخته میشه؟! بدون new کردن؟!
    امکان داره مثالی ساده بزنید که یک کلاس ساخته بشه و خودمون این کار رو بکنیم؟

    این کد زیر مثالی از بدون آرایه بدون این مورد هست.

    DateTime saveNow = DateTime.Now;
    دعا گو دوستان هستیم
    Last edited by Life24; 24-11-2013 at 09:40.

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

    پيش فرض

    سلام
    اگر منظورتان این است که کدهایی شبیه این مینویسید ...
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    جان من این شوخی ها را نکنید، قلبم ضعیف است! این کدها شدیداً اشتباه و خنده دار هستند.
    نیاز به new وجود ندارد و این new اضافه، کاملاً بی مورد و بی معنی است.

    در این مورد تا حدودی در تاپیک زیر صحبت کرده بودیم:
    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
    پیشنهاد میکنم مجدد مطالعه کنید.


    متغییر ها ظرف هایی ساده هستند.
    کدام کتاب؟ کدام مطلب؟ کدام دانش؟ بر این دلالت دارد که وقتی مقداری در متغییری میریزیم مقدار قبلی آن هم حفظ میشود؟؟؟؟؟
    مثالی میزنم.
    کد int x = 333 کدی صحیح است، به همان صحت و سلامت کد x = 5 ولی اگر پشت سرهم بیایند دیگر منطقی نیست، بلکه خنده دار است!
    آیا به نظر شما کد زیر منطقی است؟
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    چه بی منطقی در کد فوق وجود دارد؟
    اگر کسی به شما بگوید که 333 را ریخته که x خالی نباشید، چطور جواب میدهید؟
    به نظر شما چه توجیهی میتوان برای نوشتن دو خط فوق پشت سر هم آورد؟ آیا اصلاً هیچ توجیهی منطقی میتوان آورد؟
    آیا نوشتن این دو خط کد پشت سرهم بی منطق و مضحک نیست؟

    آیا بعد از x = 5 اثری از 333 قبلی باقی می ماند؟؟؟ چرا؟
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    پس چطور انتظار دارید در دو خط فوق اثری از مقدار خط اول باقی بماند؟
    ایا تفاوتی بین مثال متغییر x و مثال متغییر y فوق وجود دارد؟
    نمی خواهید بگویید که اولی int است و دومی ANYTYPE ؟
    این دو خط کد به همان اندازه مسخره و مضحک است که دو خط کد مثال x بوده.

    در واقع بحث سر new نیست، ربطی به new ندارد.
    بحث اصلی اینجاست که دو عمل جایگزینی با = پشت سر هم روی یک متغییر مشخص بی معنی است.
    تنها موردی که منطقی است، حضور متغییر در سمت راست است مانند:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    این میتواند منطقی باشد ولی در سایر موارد (دو = پشت سر هم روی یک متغییر) معنی ندارد
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    ==============

    به گمانم اگر دقیق بخوانید به همه سوالاتتان پاسخ داده شد ولی این یکی را باز صراحتاً پاسخ میدهم:
    ... میاد تابع GetDrives() رو داخلش میریزه ... ؟
    کدهای داخل تابع GetDrives اجرا و خروجی حاصل از آن (که یک شی new شده یا در حالت کلی شاید null باشد) را در متغییر شما میریزید.
    درست عین تابع Add و متغییر z در تاپیکی که برای مطالعه پیشنهاد کردم.
    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]

    ==============

    موفق باشید.
    Last edited by _H2_; 24-11-2013 at 22:55.

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


Thread Information

Users Browsing this Thread

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

User Tag List

برچسب های این موضوع

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

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