匿名方法或者匿名對象,顧名思義在定義方法或者對象是不進行具體的命名。
如var object=new{ID=“01”,Name="02"};則表示定義了一個對象,其含有ID和name,可以通過obj.ID進行相關通路。
匿名方法與其類似,即不用方法名字,直接對方法進行定義,匿名方法一般用在此方法引用較少,但是又需要是一個方法,如線程或者委托時。如下:
Mydelegate de =delegate(string str)//此處相當于用delegate代替函數名,同時進行函數體構造
{
Console.WriteLine(str);
};
不采用匿名方法時如下:
Mydelegate de1 = new Mydelegate(show);
匿名方法的極緻就是Lamda表達式,即不聲明方法名稱,直接用括号來表示入口參數。如下:
delegate int Mydelegate(int a, int b);
static void Main(string[] args)
{
Mydelegate gwl = (p, z) => z - (p + 10);//p,z 為參數, z - (p + 10)為傳回值
Console.WriteLine(gwl(10, 100)); //列印80,z對應參數b,p對應參數a
Func<int, int, bool> gwl1 = (p, z) =>
{
if (p + z == 10)
{
return true;
}
else return false;
};
Console.WriteLine(gwl1(10, 0));
利用委托進行異步程式設計中Lamda表達式的用法:
fun.BeginInvoke(100, "LIU", de =>
{
string mes = fun.EndInvoke(de);
Console.WriteLine(mes);
}, null);