PDA

View Full Version : مبتدی: توضیح منطقی callback function



behnamps
پنج شنبه 29 آبان 1399, 15:02 عصر
با سلام دوستان تویه مصاحبه ای از من پرسیدند callback function چیه و چطوری استفاده میشه - من گفتم تویه سی شارپ از delegate استفاده میشه اما قبول نکردند - دوستان کسی میدونه توضیح قابل فهمش چیه و آیا من اشتباه گفتم یا نه ؟ ممنون

the king
پنج شنبه 29 آبان 1399, 23:15 عصر
با سلام دوستان تویه مصاحبه ای از من پرسیدند callback function چیه و چطوری استفاده میشه - من گفتم تویه سی شارپ از delegate استفاده میشه اما قبول نکردند - دوستان کسی میدونه توضیح قابل فهمش چیه و آیا من اشتباه گفتم یا نه ؟ ممنون

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

برای پیاده سازی callback function روش های متعددی بکار برده میشه، delegate هم در ساختار برخی از آنها هست.

با استفاده از Interface ها، مثلا Array.Sort از اینترفیس IComparer استفاده می کنه تا تابع Compare رو شناسایی و فراخوانی کنه :

var a = new string[] { "Bee", "Apple", "age", "BOOK" };
Array.Sort(a, StringComparer.OrdinalIgnoreCase);
MessageBox.Show(string.Join(", ", a));


مستقیما با استفاده از delegate ها، مثلا Thread با استفاده از delegate ای با نام ThreadStart یک روتین بدون پارامتر ورودی رو شناسایی و فراخوانی می کنه :

var thread = new Thread(MyProc);
thread.Start();

private void MyProc()
{
MessageBox.Show("Hello");
}


با استفاده از event ها، مثلا Tick در Timer برای نمایش مستمر زمان :

var t = new Timer();
t.Tick += t_Tick;
t.Start();

private void t_Tick(object sender, EventArgs e)
{
Text = DateTime.Now.TimeOfDay.ToString();
}


استفاده از عبارت lambda مثلا جمع کردن دو عدد :

Func<int, int, int> add = (a, b) => (a + b);
var n = add.Invoke(4, 6);
MessageBox.Show(n.ToString());