程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# λ運算符=)匿名方法 lambda表達式

C# λ運算符=)匿名方法 lambda表達式

編輯:C#入門知識

C# λ運算符=)匿名方法 lambda表達式


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 = "匿名方法外部\n";

            //中括號部分定義了一個方法,沒有名稱,編譯器會自動指定一個名稱  
            MyDelagate my = (string param) =>
            {
                string str2 = "匿名方法內部\n";
                return(param + str1 + str2);
            };

            //調用委托的匿名方法  
            Console.WriteLine(my("參數\n"));

            //從結果可以看到,匿名方法同樣達到了為委托定義實現體方法的效果  
            Console.Read();
        }  
    }
}

λ運算符 =>

左邊是參數,使用括號表達 (string param),

右邊是實現代碼,使用花括號,如果代碼只有一行,則不使用花括號和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個或多個參數:兩個或者多個參數不能使用簡略的方式書寫,必須使用小括號聲明參數。

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();


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved