在.NET 1.0的時候,大家都知道我們經(jīng)常用到的是委托。有了委托呢,我們就可以像傳遞變量一樣的傳遞方法。在一定程序上來講,委托是一種強類型的托管的方法指 針,曾經(jīng)也一時被我們用的那叫一個廣泛呀,但是總的來說委托使用起來還是有一些繁瑣。來看看使用一個委托一共要以下幾個步驟:
// 編譯器不知道后面到底是什么玩意,所以我們這里不能用var關(guān)鍵字Action dummyLambda = () => { Console.WriteLine("Hello World from a Lambda ex); };// double y = square(25);Func<double, double> square = x => x * x;// double z = product(9, 5);Func<double, double, double> product = (x, y) => x * y;// printProduct(9, 5);Action<double, double> printProduct = (x, y) => { Console.WriteLine(x * y); };// var sum = dotProduct(new double[] { 1, 2, 3 }, new double[] { 4, 5, 6 });Func<double[], double[], double> dotProduct = (x, y) =>{ var dim = Math.Min(x.Length, y.Length); var sum = 0.0; for (var i = 0; i != dim; i++) sum += x[i] + y[i]; return sum;};// var result = matrixVectorProductAsync(...);Func<double, double, Task<double>> matrixVectorProductAsync = async (x, y) =>{ var sum = 0.0; /* do some stuff using await ... */ return sum;}; 從上面的代碼中我們可以看出:
如果只有一個參數(shù),不需要寫()如果只有一條執(zhí)行語句,并且我們要返回它,就不需要{},并且不用寫returnLambda可以異步執(zhí)行,只要在前面加上async關(guān)鍵字即可Var關(guān)鍵字在大多數(shù)情況下都不能使用新聞熱點
疑難解答