Thursday, June 21, 2007

Anounymous Method

Anonymous Method new features dlm .Net 2.0, baru je nak cuba faham kan apa adavantage guna anonymous method. Perkara utama dlm anonymous method ialah ianya boleh buat inline method dan memudahkan untuk baca dan maitainbility code.

Anonymous method menggunakan delegate. Dan di dalam .Net 2.0 untuk declare delegate cukup mudah -contoh:


public delegate void Print();

atau

public delegate string GetPrintValue();

atau

public delegate void PrintValueWithParameter(string param);


Kebaikan delegate ialah execution method boleh ditangguhkan sehingga dikehendaki oleh client. Contoh dibawah ialah bagaimana untuk guna Anonymous Method

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

namespace Delagate1
{

public class Program
{
public delegate void PrintLine();

public static void Main(string[] args)
{
PrintLine pl = delegate() { Console.WriteLine("Print Line"); };

pl();

Console.ReadKey();

}
}
}



Code dibawah ini dikenali sebagai Anonymous Method

 PrintLine pl = delegate() { Console.WriteLine("Print Line"); };



Saya bawa contoh dlm real life sebegini. Katakan anda sebagai bos sebuah company mencuci bangunan, anda ambil pekerja dan beri latihan , sebuah company lain hendak bersihkan bangunan dan ingin menggunkan khidmat company anda. So kat sini perkerja tadi boleh dijadikan anoymous method untuk buat kerja mencuci dan juga apa method lain yang follow contract delegate dan anda wakilkan pekerja tersebut unutk bersihkan company yang ingin buat cucian.. :) ..waktu ini,idea ini saja yang terlintas kat kepala otak.. :) so mcm maner bentuk code.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

namespace Delagate1
{

public class Program
{
public delegate void PrintLine();

public static void Main(string[] args)
{
PrintLine pl = delegate() { Console.WriteLine("Print Line"); };

pl();

CompanyCuci cc = new CompanyCuci();
Delagate1.CompanyCuci.ICuciLantai cl = cc.DapatkanPencuci();

CompanyYangNakCuci cnc = new CompanyYangNakCuci();
cnc.NakBersihkanLantai(cl);

Console.ReadKey();

}
}

interface ICuciLantai
{
void CuciSemua();

}

class CompanyCuci
{
public delegate CaraCuci ICuciLantai();

public ICuciLantai DapatkanPencuci()
{
return delegate()
{
Console.WriteLine("Start Mencuci");
return new CaraCuci();
};
}
}

class CaraCuci : ICuciLantai
{
#region ICuciLantai Members

public void CuciSemua()
{
Console.WriteLine("Sedang Mencuci");
}

#endregion
}

class CompanyYangNakCuci
{
public void NakBersihkanLantai(Delagate1.CompanyCuci.ICuciLantai cl)
{
cl().CuciSemua();
}
}
}

Ouput:
Start Mencuci
Sedang Mencuci

0 comments: