c# lambda表达式基础语法

Lambda 表达式基础

Lambda 表达式是一种简洁的定义匿名函数的方式。它们通常用于需要传递函数作为参数或返回值的场景。

Action 委托

Action 和 Action 是 .NET 中预定义的委托类型,用于表示没有返回值的方法。

  1. 没有参数列表的 Action

    Action a1 = () =>
    {
    Console.WriteLine("没有参数列表");
    };
    a1();
    • Action:表示没有参数且没有返回值的方法。
    • () => { ... }:这是一个没有参数的 Lambda 表达式。
    • a1():调用这个 Lambda 表达式。
  2. 带一个参数的 Action

    Action a2 = (value) =>
    {
    Console.WriteLine(value);
    };
    a2(10);
    • Action:表示带一个 int 类型参数且没有返回值的方法。
    • (value) => { ... }:这是一个带一个参数的 Lambda 表达式,参数名为 value
    • a2(10):传递 10 作为参数调用这个 Lambda 表达式。

Func 委托

Func 是 .NET 中预定义的委托类型,用于表示有返回值的方法。

  1. 带一个参数并返回值的 Func

    Func a3 = (value) =>
    {
    Console.WriteLine(value);
    return 1;
    };
    Console.WriteLine(a3("hello"));
    • Func:表示带一个 string 类型参数并返回一个 int 类型结果的方法。
    • (value) => { ... }:这是一个带一个参数的 Lambda 表达式,参数名为 value,并且它返回一个 int 类型的值。
    • Console.WriteLine(a3("hello")):传递 "hello" 作为参数调用这个 Lambda 表达式,并打印返回值。

关键点总结

  • Lambda 表达式的语法(parameters) => { statements } 或 (parameters) => expression
    • parameters:参数列表,可以没有参数,也可以有一个或多个参数。
    • { statements }:语句块,包含要执行的代码。
    • expression:一个表达式,其值将作为 Lambda 表达式的返回值(如果 Lambda 表达式有返回值)。
  • 委托:委托是一种引用类型,用于表示对某个静态方法或实例方法的引用。Action 和 Func 是 .NET 中常用的委托类型。
    • Action:表示没有返回值的方法。
    • Func:表示有返回值的方法。
  • 调用委托:一旦将 Lambda 表达式赋值给委托变量,就可以像调用普通方法一样调用这个委托变量。

通过这段代码,您可以看到 Lambda 表达式和委托在 C# 编程中的实际应用,它们使得代码更加简洁和灵活。

完整代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _1.lambda表达式
{
    class Program
    {
        static void Main(string[] args)
        {

            Action a1 = () =>
            {
                Console.WriteLine("没有参数列表");
            };
            a1();

            Action a2 = (value) =>
            {
                Console.WriteLine(value);
            };
            a2(10);

            Func a3 = (value) =>
            {
                Console.WriteLine(value);

                return 1;
            };
            Console.WriteLine(a3("hello"));
        }
    }
}

 

你可能感兴趣的:(c#语法学习,c#,开发语言)