美文网首页
C# 匿名函数

C# 匿名函数

作者: CodeVin | 来源:发表于2019-03-23 15:52 被阅读0次

匿名函数可在需要委托的任何地方使用。可以使用匿名函数来初始化委托实例。共有两种匿名函数: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) { /* ... */ };

相关文章

  • C#匿名函数

    在 2.0 之前的 C# 版本中,声明委托的唯一方式是使用命名方法。 C# 2.0 引入匿名方法,在 C# 3.0...

  • C# 匿名函数

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

  • java8 lambda-2-各类语言中的lambda

    C/C++:函数指针 C#:委托 java之前:接口参数,实际传入匿名对象(匿名内部类) lamda表达式是Jav...

  • Python学习(十六)--lambda表达式、map和redu

    1.lambda表达式 python把lambda称作匿名函数,C#则直接称作lambda表达式(lambda表达...

  • day11高级函数和变量的作用域

    1. 匿名函数 1.1 什么是匿名函数 没有函数名的函数就是匿名函数 (匿名函数还是函数!!!!!!) 1.2 ...

  • C#委托 匿名函数 Lambda

    C# 中委托的发展#在 C# 1.0 中,通过使用在代码中其他位置定义的方法显式初始化委托来创建委托的实例。 C#...

  • Day10-匿名函数&变量的作用域&函数递归&迭代器&生成器

    匿名函数 1.匿名函数 匿名函数就是没有函数名的函数; 匿名函数可以看成是类型是function的值和10, 'a...

  • Day10 函数

    一.匿名函数 1.匿名函数 匿名函数就是没有函数名的函数; 匿名函数可以看成是类型是function的值和10, ...

  • kotlin基础学习-2(匿名函数相关)

    匿名函数 定义时不取名字的函数,我们称之为匿名函数,匿名函数通常整体传递给其他函数,或者从其他函数返回。 匿名函数...

  • 总结Day10_函数提升

    ****函数**** ===匿名函数=== 1.什么是匿名函数   匿名函数还是函数,只是声明的格式和普通函数不一...

网友评论

      本文标题:C# 匿名函数

      本文链接:https://www.haomeiwen.com/subject/jpssvqtx.html