مشخصات مقاله
-
1344
-
0.0
-
3603
-
0
-
0
متدهای anonymous در C#
متدهای anonymous
همانطور که بررسی کردیم، نمایندهها در اشاره به متدهایی کاربرد دارند که امضای آنها مانند امضای این نمایندهها است. به بیان دیگر میتوانید متدی را فراخوانی کنید که بتوان توسط یک نماینده و با استفاده از شیء این نماینده به آن اشاره کرد.
متدهای anonymous تکنیکی را فراهم میکنند که با کمک آن میتوان بلوکی از کد را به عنوان یک پارامتر نماینده رد کرد. این متدها درست مانند بدنه متدهای بدون نام هستند.
نیازی به برگشت دادن نوع متدهای anonymous نیست. زیرا این نوعها از دستور برگشتی داخل بدنهی متد استنتاج میشوند.
نوشتن متدهای anonymous
متدهای anonymous با ایجاد نمونهی نماینده به کمک واژهی کلیدی delegate اعلان میشوند. مانند زیر:
delegate void NumberChanger(int n);
...
NumberChanger nc = delegate(int x) {
Console.WriteLine("Anonymous Method: {0}", x);
};
بلوک کد Console.WriteLine("Anonymous Method: {0}", x); بدنهی این متد anonymous است.
نماینده را میتوان از طریق متدهای anonymous و از طریق متدهای نام دار به شیوهای یکسان فراخوانی کرد. یعنی به این صورت که پارامترهای متد به شیء نماینده رد شوند.
برای مثال:
nc(10);
مثال
در مثال زیر این مفهوم توضیح داده شده است:
using System;
delegate void NumberChanger(int n);
namespace DelegateAppl {
class TestDelegate {
static int num = 10;
public static void AddNum(int p) {
num += p;
Console.WriteLine("Named Method: {0}", num);
}
public static void MultNum(int q) {
num *= q;
Console.WriteLine("Named Method: {0}", num);
}
public static int getNum() {
return num;
}
static void Main(string[] args) {
//create delegate instances using anonymous method
NumberChanger nc = delegate(int x) {
Console.WriteLine("Anonymous Method: {0}", x);
};
//calling the delegate using the anonymous method
nc(10);
//instantiating the delegate using the named methods
nc = new NumberChanger(AddNum);
//calling the delegate using the named methods
nc(5);
//instantiating the delegate using another named methods
nc = new NumberChanger(MultNum);
//calling the delegate using the named methods
nc(2);
Console.ReadKey();
}
}
}
زمانی که کد بالا کامپایل و اجرا شود، نتیجه به صورت زیر نمایش داده میشود:
Anonymous Method: 10 Named Method: 15 Named Method: 30