سلام
تاپیکتان را قبلا دیدم و سوالاتان را ذخیره کردم و سرفرصت جوابی دهم...
حالا دوستمان Xeoc لطف کرده و جواب دادند که صحیح هم است ولی چون قبلاً تایپ کردم گفتم دیگر حیف است!
اگر بخواهیم از delegate استفاده کنیم با با تابع معمولی بنویسیم باید چی کار کنیم؟
میخواهم ببینم دقیقا چه اتفاقی داره پشت پرده میافته؟
کامپایل عبارت n => n % 2 == 1 شما را به یک تابع تبدیل میکند:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در واقع این دو کد زیر کاملاً برابر هستند
بخش از کد اولی را کامپایلر جای ما تایپ میکند!
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
آخه ما n رو هم تعریف نکردیم
ضمنی از جنس int تعریف شده
اگر تعریف نشده بود شما نمیتوانستید باقیمانده اش را محاسبه کنید
در واقع در حال حاضر تابع where یک delegate از نوع <Func<int,bool می خواهد ...
یعنی یک تابع که ورودی int و خروجی bool دارد، پس ورودی و خروجی عبارت Lambda مورد نیاز مشخص است؟! اینطور نیست؟! فقط کافیست کدش را بنویسید.
اصلا یک همچین چیزی رو بخواهیم خودمون بنویسیم(منظورم where )هست باید چه کنیم؟
هیچ جای تردید و ابهام و پنهان کاری و خط ویژه ای وجود ندارد...
منظورم آن است که خودتان هم بسادگی میتوانید این توابع یا توابع مشابه را بنویسید و مایکروسافت برای نوشتن این توابع هیچ خط ویژه ای برای خود قائل نشده
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
موفق باشید.