Metode Anonim C#: Meningkatkan Kemudahan Penggunaan Delegasi
Kami telah membahas bahwa delegasi digunakan untuk merujuk ke metode apa pun yang memiliki tanda tangan yang sama dengan delegasi. Dengan kata lain, Anda dapat memanggil metode yang dapat dirujuk oleh delegasi menggunakan objek delegasi tersebut.
Metode anonim menyediakan teknik untuk meneruskan blok kode sebagai parameter delegasi. Metode anonim adalah metode tanpa nama, hanya tubuhnya saja.
Anda tidak perlu menentukan tipe pengembalian dalam metode anonim; tipe tersebut disimpulkan dari pernyataan return di dalam tubuh metode.
Menulis Metode Anonim
Metode anonim dideklarasikan dengan pembuatan instance delegasi, dengan kata kunci delegate. Misalnya,
delegate void NumberChanger(int n); ... NumberChanger nc = delegate(int x) { Console.WriteLine("Anonymous Method: {0}", x); }; Blok kode Console.WriteLine("Anonymous Method: {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.
Misalnya,
nc(10);
Contoh
Contoh berikut menunjukkan konsepnya −
Live Demo
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 dieksekusi, hasilnya adalah sebagai berikut −
Anonymous Method: 10 Named Method: 15 Named Method: 30