Lamda進化史
8773 ワード
この論文はコード実践に重点を置いています。理論は移行してください。http://www.cnblogs.com/zhaopei/p/5767631.html
依頼->匿名の方法->Fun&Anction->Lamda誕生->Lamda非同期
委託する
依頼->匿名の方法->Fun&Anction->Lamda誕生->Lamda非同期
委託する
public delegate void AddDelegate(int a,int b);
public void Run()
{
AddDelegate add = new AddDelegate(Add);
add(1,5);
}
public void Add(int a,int b)
{
Console.WriteLine(a+b);
}
匿名の方法 public delegate int AddDelegate(int a,int b);
public void Run()
{
Test1();
Test2();
}
///
///
///
void Test1()
{
AddDelegate add = new AddDelegate(delegate(int a,int b) { return a + b; });
int num = add(1, 5);
Console.WriteLine(num);
}
Funnc&アクション ///
///
///
void Test2()
{
Func<int, int, string> add = new Func<int, int, string>(delegate(int a,int b) { int num = a + b;return "result is:"+num; });
Console.WriteLine(add(10,23));
}
public void Run()
{
Test(ResultOK,ResultError);
}
void Test(Action ok,Action error)
{
if (true)
ok();
else
error();
}
void ResultOK()
{
Console.WriteLine("OK");
}
void ResultError()
{
Console.WriteLine("Error");
}
ラムダ誕生 ///
///
///
void T1()
{
Func<int, int, string> Add = delegate (int a, int b) { int num = a + b; return (a + b).ToString(); };
Console.WriteLine(Add(300, 400));
}
///
///
///
void T2()
{
Func<int, int, string> Add = (int a, int b) => { int num = a + b; return (a + b).ToString(); };
Add = (a, b) => { return (a + b).ToString(); };
Add = (a,b) => (a + b).ToString();
Console.WriteLine(Add(6, 400));
}
///
・
///
///
void T3()
{
Func<int,int> add= (a) => 10 + a;
add = a => 10 + a;
}
Lamda非同期 public void Run()
{
/// , Wait !!!!!!!!!!
T1().Wait();
}
///
///
///
///
async Task T1()
{
Func<string, Task<string>> func = async t => { await Task.Delay(300); Console.WriteLine(t); return "aa"; };
string data = await func("aaa");
Console.WriteLine(data);
Func<int, int, Task> func1 = async (a, b) => { await Task.Delay(500); Console.WriteLine(a + b); };
func1(10, 20).Wait() ;
}
ソースのダウンロード先:http://download.csdn.net/detail/fwj380891124/9636185