很黄的爱爱高潮小说的软件,两男一女60分钟视频,人妻少妇精品无码一区二区三区,苍井空亚洲精品AA片在线播放,日本又黄又粗又大叫床免费视频

C# lambda表達(dá)式的幾個(gè)案例

2024-10-18


轉(zhuǎn)自知乎 羅澤南


Lambda 表達(dá)式在 C# 中用于簡(jiǎn)化匿名方法的書(shū)寫(xiě)形式。它廣泛用于 LINQ 查詢(xún)、事件處理、委托等場(chǎng)景。下面通過(guò)幾個(gè)詳細(xì)的案例展示 lambda 表達(dá)式的各種用法。

案例 1:基本的 Lambda 表達(dá)式

最基本的 Lambda 表達(dá)式通常是用于表示一個(gè)簡(jiǎn)單的函數(shù)或委托。在下面的例子中,我們定義了一個(gè)委托 Func<int, int>,并使用 Lambda 表達(dá)式為它賦值。

using System;

class Program{
    static void Main()
    {
        // Lambda 表達(dá)式:接收一個(gè)參數(shù) x,返回 x 的平方        
        Func<int, int> square = x => x * 2;
        
        int result = square(5); // 計(jì)算 5 的平方        
        Console.WriteLine(result); // 輸出 10    
    }
}

解釋?zhuān)?/span>

案例 2:Lambda 表達(dá)式和 LINQ

Lambda 表達(dá)式在 LINQ 查詢(xún)中非常常見(jiàn)。下面的例子展示如何使用 Lambda 表達(dá)式過(guò)濾并操作集合中的數(shù)據(jù)。

using System;using 
System.Collections.Generic;using 
System.Linq;

class Program{
    static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
        // 使用 Lambda 表達(dá)式來(lái)篩選出所有的偶數(shù)        
        IEnumerable<int> evenNumbers = numbers.Where(x => x % 2 == 0);
        Console.WriteLine("Even numbers:");
        foreach (var number in evenNumbers)
        {
            Console.WriteLine(number); // 輸出 2, 4, 6, 8, 10        
        }
    }
}

解釋?zhuān)?/span>

案例 3:Lambda 表達(dá)式和事件處理

Lambda 表達(dá)式也可以用作事件處理器的簡(jiǎn)寫(xiě)形式。通常在添加事件處理器時(shí)可以使用匿名方法或 Lambda 表達(dá)式。

using System;

class Program{
    static void Main()
    {
        // 使用 Lambda 表達(dá)式來(lái)處理按鈕點(diǎn)擊事件        
        Button button = new Button();
        button.Click += (sender, e) => Console.WriteLine("Button clicked!");
        
        // 模擬按鈕點(diǎn)擊        
        button.OnClick();
    }
}

class Button{
    public event EventHandler Click;
    public void OnClick()
    {
        // 觸發(fā)事件        
        Click?.Invoke(this, EventArgs.Empty);
    }
}

解釋?zhuān)?/span>

案例 4:復(fù)雜的 Lambda 表達(dá)式(多參數(shù)、多行)

Lambda 表達(dá)式不僅可以用于簡(jiǎn)單的表達(dá)式,它還支持多參數(shù)和多行代碼。我們可以使用花括號(hào) {} 來(lái)定義多行 Lambda 表達(dá)式。

using System;

class Program{
    static void Main()
    {
        // 定義一個(gè)接受兩個(gè)參數(shù)的 Lambda 表達(dá)式,并包含多行代碼        
        Func<int, int, int> addAndMultiply = (x, y) =>
        {
            int sum = x + y;
            return sum * 2; // 返回和的兩倍        
        };
        int result = addAndMultiply(3, 4);
        Console.WriteLine(result); // 輸出 14    
    }
}

解釋?zhuān)?/span>

案例 5:Lambda 表達(dá)式與 Action 和 Predicate

using System;using 
System.Collections.Generic;

class Program{
    static void Main()
    {
        // 使用 Action Lambda 表達(dá)式來(lái)輸出消息        
        Action<string> greet = message => Console.WriteLine(message);
        greet("Hello, World!"); // 輸出 Hello, World!
        // 使用 Predicate Lambda 表達(dá)式來(lái)檢查數(shù)字是否為正        
        Predicate<int> isPositive = x => x > 0;
        List<int> numbers = new List<int> { -1, 2, -3, 4, 5 };
        List<int> positiveNumbers = numbers.FindAll(isPositive);
        Console.WriteLine("Positive numbers:");
        foreach (var number in positiveNumbers)
        {
            Console.WriteLine(number); // 輸出 2, 4, 5        
        }
    }
}

解釋?zhuān)?/span>

案例 6:Lambda 表達(dá)式與表達(dá)式樹(shù)

表達(dá)式樹(shù)用于將 Lambda 表達(dá)式轉(zhuǎn)換為數(shù)據(jù)結(jié)構(gòu),可以在運(yùn)行時(shí)分析和修改。這個(gè)功能主要用于動(dòng)態(tài) LINQ 查詢(xún)。

using System;
using System.Linq.Expressions;

class Program{
    static void Main()
    {
        // 創(chuàng)建一個(gè) Lambda 表達(dá)式的表達(dá)式樹(shù)        
        Expression<Func<int, int>> expression = x => x * x;
        
        // 編譯并執(zhí)行表達(dá)式        
        Func<int, int> square = expression.Compile();
        Console.WriteLine(square(5)); // 輸出 25    
    }
}

解釋?zhuān)?/span>

總結(jié)

這些案例展示了 Lambda 表達(dá)式在不同場(chǎng)景中的使用方式,讓代碼更簡(jiǎn)潔、直觀。


返回
;