[Windows Phone] 運算式 Lambda(Expression Lambda)

本篇簡單示範運算式 Lambda(Expression Lambda)的用法。

前言

本篇簡單示範運算式 Lambda(Expression Lambda)的用法。

 

說明

運算式 Lambda,傳回運算式結果後採用下列:

  • 一個參數時,括號是 "選擇性" 的
    例︰( y ) => y * y;  或者  y => y * y;
  • 多個參數時,括號是 "必須" 的
    例:( a, b ) => a == b
  • 當編譯器判斷不出輸入型別時,我們可以明確指定型別
    例:(int a, string i) => i.Length > a
  • 無參數時,則以空括號指定
    例:() => SomeMethod()

 

示範

Step1、建立一個新專案

01

 

Step2、畫面設計

在 Grid 內佈置下面畫面,其控制項配置如下:

  • Button 按鈕,Name 屬性:btn1,Content 屬性:確定

02

 

產生的 XAML 程式碼如下:


 <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
            <Button x:Name="btn1" Content="確 定" HorizontalAlignment="Left" Margin="116,76,0,0" VerticalAlignment="Top" Height="109" Width="210" FontSize="36"/>

</Grid>

 

Step3、在 MainPage.cs 程式碼中撰寫事件處理函式:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
using PhoneApp1.Resources;

namespace PhoneApp1
{
    public partial class MainPage : PhoneApplicationPage
    {
        // 建構函式
        public MainPage()
        {
            InitializeComponent();

            btn1.Click += btn1_Click; //產生btn1的Click事件
            
        }

        delegate bool methAddr1(int i, string s);
        delegate int methAddr2();
        void btn1_Click(object sender, RoutedEventArgs e)
        {
            methAddr1 compStrLen = (x, s) => s.Length > x;
            bool res = compStrLen(5, "banana");
            MessageBox.Show("banana 長度是否超過3 = " + res.ToString());

            methAddr2 compSum = () => Sum();
            int res1 = compSum();
            MessageBox.Show("1*2*3*4*5 = " + res1.ToString());
        }

        private int Sum()
        {
            int s = 1;
            for (int i = 1; i <= 5; i++)
                s *= i;
            return s;
        }
    }
}

 

結果

按一下頁面中的"確定"鈕。

03

 

判斷 banana 字串長度是否超過 3,是的話會跳出一個 MessageBox。

04

 

跳到下一個 MessageBox,算出 1*2*3*4*5 的結果。

05

 

相關參考與引用

Lambda 運算式 (C# 程式設計手冊)