C# λ演算子=>匿名メソッドlambda式

2242 ワード

Lambda式は匿名関数であり,C 3.0が導入した新しい特性である.Lambda演算子=>は、「goes to」と読みます.C#依頼に匿名者を定義できる仕組みを提供
メソッド、匿名メソッドには名前がありません.コンパイラは名前を指定します.匿名メソッドでは、ジャンプ文を使用して匿名メソッドの外部にジャンプしたり、メソッドの内部にジャンプしたりすることはできません.匿名メソッドの外部にも
使用するrefパラメータとoutパラメータ.
次のコードはLambda式を簡単に示しています.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Linq.Expressions; //using

namespace Lambda
{
    class Program
    {
        //    
        delegate string MyDelagate(string val);

        static void Main(string[] args)
        {
            string str1 = "      
"; // , , MyDelagate my = (string param) => { string str2 = "
"; return(param + str1 + str2); }; // Console.WriteLine(my("
")); // , Console.Read(); } } }

λ演算子=>
左側はパラメータで、カッコ表現(string param)を使用して、
右側は実装コードで、カッコを使用します.コードが1行しかない場合は、カッコとreturnキーワードを使用しなくてもいいです.コンパイラが追加します.
これはλ式の簡単な実装:
string str1 = "        ";
string str2 = "        ";
MyDelagate my = param => param + str1 + str2;
Console.WriteLine(my("    "));

1パラメータ:
private delegate int MyDelagate(int i);

MyDelagate test1 = x => x * x;
MyDelagate test2 = (x) => x * x;
MyDelagate test3 = (int x) => x * x;
MyDelagate test4 = (int x) => { return x * x; };

Console.WriteLine(test1(10));
Console.WriteLine(test2(10));
Console.WriteLine(test3(10));
Console.WriteLine(test4(10));

2つ以上のパラメータ:2つ以上のパラメータは簡単に書くことはできません.カッコでパラメータを宣言する必要があります.
private delegate int MyDelagate(int x, int y);

MyDelagate test1 = (x, y) => x * y;
MyDelagate test2 = (int x, int y) => x * y;
MyDelagate test3 = (int x, int y) => { return x * y; };

Console.WriteLine(test1(3,4));
Console.WriteLine(test2(3,4));
Console.WriteLine(test3(3,4));

パラメータなし:
 private delegate void Void();       

 void test11 = () => { Console.WriteLine("Void Params"); };
 test11();