程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> [C# 3.0 入門] [第一章 Lambda表達式] 第五節(3)

[C# 3.0 入門] [第一章 Lambda表達式] 第五節(3)

編輯:關於C語言

Lambda表達式的各種變體

Lambda表達式有各種變體。特別是在參數只有一個的情況下,因為在語法上可以省略參數兩邊的括弧,全面把握起來會比較困難。所以,下面的代碼給出幾種主流的變體的寫法。

1using System;
2
3delegate int NoArg();
4delegate int OneArg(int onlyOne);
5delegate int TowArgs(int first, int second);
6delegate void NoRetVal ();
7
8class Program
9{
10  static void Main(string[] args)
11  {
12   NoArg    sample1 = () => 0;
13   OneArg   sample2 = (x) => x * 2;
14   OneArg   sample3 = (int x) => x * 2;
15   OneArg   sample4 = x => x * 2;
16   TowArgs  sample5 = (x, y) => x * y;
17   TowArgs  sample6 = (int x, int y) => x * y;
18   OneArg   sample7 = (x) => { return x * 2; };
19   OneArg   sample8 = (int x) => { return x * 2; };
20   NoRetVal sample9 = () => Console.WriteLine("Hello!");
21  }
22}
23

List20 Lambda表達式的各種變體

sample1 = () => 0

在寫沒有參數的Lambda表達式的時候,要寫上沒有參數的空的括號。

sample2 = (x) => x * 2

有參數的情況下,用括號把參數表括上是最基本的寫法。

sample3 = (int x) => x * 2

當然,如果能夠明確指定參數的類型更好。

sample4 = x => x * 2

僅當參數只有一個的時候,參數兩邊的括弧可以省略。

sample5 = (x, y) => x * y

參數有多個的時候,用逗號分隔

sample6 = (int x, int y) => x * y

參數有多個的時候,也可以指定類型

sample7 = (x) => { return x * 2; }

Lambda語句的例子

sample8 = (int x) => { return x * 2; }

Lambda語中也可以指定類型

sample9 = () => Console.WriteLine("Hello!")

沒有返回值的情況,寫成調用void型返回值的方法的形式。

下期預告

介紹到這裡,Lambda表達式的大部分內容已經介紹過了。僅僅運用本章的知識,就能夠使代碼發生很大的質的變化了。

然而,如果說要完全理解了Lambda表達式的話,僅僅這樣的話還為時尚早。

實際上,推斷被省略了的類型聲明的“類型推斷”的麻煩事還在後頭呢。下一章,就來說說類型推斷。同時,也將會討論一下使用Lambda表達式的代理類型在類庫中的使用方法。例如,本章中的例子裡就用到了Action類型和Func類型。

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