C # - Metode Anonim
Kami membahas bahwa delegasi digunakan untuk mereferensikan metode apa pun yang memiliki tanda tangan yang sama seperti yang dimiliki delegasi. Dengan kata lain, Anda bisa memanggil metode yang bisa direferensikan oleh delegasi menggunakan objek delegasi tersebut.
Anonymous methodsmenyediakan teknik untuk melewatkan blok kode sebagai parameter delegasi. Metode anonim adalah metode tanpa nama, hanya isi.
Anda tidak perlu menentukan tipe pengembalian dalam metode anonim; itu disimpulkan dari pernyataan return di dalam tubuh metode.
Menulis Metode Anonim
Metode anonim dideklarasikan dengan pembuatan instance delegasi, dengan a delegatekata kunci. Sebagai contoh,
delegate void NumberChanger(int n);
...
NumberChanger nc = delegate(int x) {
Console.WriteLine("Anonymous Method: {0}", x);
};
Blok kode Console.WriteLine ("Metode Anonim: {0}", x); adalah tubuh dari metode anonim.
Delegasi dapat dipanggil baik dengan metode anonim maupun metode bernama dengan cara yang sama, yaitu dengan meneruskan parameter metode ke objek delegasi.
Sebagai contoh,
nc(10);
Contoh
Contoh berikut menunjukkan konsep -
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();
}
}
}
Ketika kode di atas dikompilasi dan dijalankan, itu menghasilkan hasil sebagai berikut -
Anonymous Method: 10
Named Method: 15
Named Method: 30