PDA

View Full Version : سوال: به کار بردن Delegate ها به شکل ژنریک در توابع .NET



babakkiani
یک شنبه 05 دی 1389, 02:28 صبح
سلام
با تشکر از وقتی که گذاشتین و سوال منو می خونین.
همانطور که می دونیم حاصل عبارات لامبدا میتونن Delegate باشن حال مثلا اگه یک Delegate به شکل زیر داشته باشیم:


publicdelegate TResults Func<Targ, TResults>(Targ arg);


و بطور مثال یک نمونه از این Delegate با تعریف زیر ایجاد کنیم:


Func<int, bool> myfunc = x => x%2 == 1;


حالا سوال این است که چرا در مثال زیر نمی توان از delegate تعریف شده استفاده کرد؟؟؟؟؟؟؟


int[] Number={1,2,3,4,5,6,7,8,9,10};
int OddNumbers = Number.Count(myfunc);


این در حالی است که میتوان مستقیماً delegate تعریف شده را استفاده کرد؟


int OddNumbers = Number.Count(x => x % 2 == 1);


باز هم از اینکه وقت می گذارین ممنونم.
بابک .:افسرده:

sia_2007
یک شنبه 05 دی 1389, 08:30 صبح
var nums = Enumerable.Range(1, 10);
Func<Int32, Boolean> func = new Func<int, bool>((num) => { return num % 2 == 0; });
nums.Count(func);


Func پشت سرش delegate اه؛ در اصل یه delegate به صورت generic ؛
پس نیاز به خط اولت نیست؛ اون رو پاک کن؛ مسئه حل میشه.
موفق باشی.

babakkiani
یک شنبه 05 دی 1389, 11:03 صبح
سلام
از پاسخی که بهم دادین ممنون و بسیار سپاسگذارم.
مرسی.:تشویق: