C# 匿名函数

本文介绍了C#中的匿名函数,包括Lambda表达式和匿名方法的使用。从C#1.0到C#3.0的委托创建过程演变被详细阐述,展示了如何通过Lambda表达式简化代码。Lambda表达式常用于异步方法、LINQ查询和创建表达式树。同时,文章还解释了语句lambda和匿名方法的语法和应用场景。
摘要由CSDN通过智能技术生成

转载地址:
https://www.jianshu.com/p/17540d859c34

匿名函数可在需要委托的任何地方使用。可以使用匿名函数来初始化委托实例。共有两种匿名函数:Lambda表达式 和 匿名方法。

下面的示例演示了从 C# 1.0 到 C# 3.0 委托创建过程的发展

class Test
{
    delegate void TestDelegate(string s);
    static void M(string s)
    {
        Console.WriteLine(s);
    }

    static void Main(string[] args)
    {
        // Original delegate syntax required 
        TestDelegate testDelA = new TestDelegate(M);

        // C# 2.0: A delegate can be initialized with
        TestDelegate testDelB = delegate(string s) { Console.WriteLine(s); };

        // C# 3.0. A delegate can be initialized with
        TestDelegate testDelC = (x) => { Console.WriteLine(x); };

        // Invoke the delegates.
        testDelA("Hello. My name is M and I write lines.");
        testDelB("That's nothing. I'm anonymous and ");
        testDelC("I'm a famous author.");

        // Keep console window open in debug mode.
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}

Lambda表达式

Lambda表达式广泛应用于:

  • 将要执行的代码传递给异步方法。如 Task.Run(Action)
  • 编写LINQ查询表达式
  • 创建表达式树

表达式lambda

表达式位于 => 运算符右侧的lambda表达式称为“表达式lambda”。表达式lambda会返回表达式的结果,并采用以下基本形式:

(input-parameters) => expression

括号内多个输入参数使用逗号加以分隔:

Func<int, int, bool> testForEquality = (x, y) => x == y;

语句lambda

语句lambda的语句在大括号中:

(input-parameters) => { statement; }

当只有一个输入参数时,小括号可以省略:

Action<string> greet = name => 
{ 
    string greeting = $"Hello {name}!";
    Console.WriteLine(greeting);
};
greet("World");
// Output:
// Hello World!

匿名方法

创建匿名方法实际上是一种将代码作为委托参数传递的方式,如下示例:

// Create a delegate.
delegate void Del(int x);

// Instantiate the delegate using an anonymous method.
Del d = delegate(int k) { /* ... */ };
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值