匿名函数

匿名函数是一个“内联”语句或表达式,可在需要委托类型的任何地方使用。 可以使用匿名函数来初始化命名委托,或传递命名委托(而不是命名委托类型)作为方法参数。

共有两种匿名函数,以下主题中分别讨论了这些函数:

Lambda 表达式可以绑定到表达式树,也可以绑定到委托。

 

在 C# 1.0 中,您通过使用在代码中其他位置定义的方法显式初始化委托来创建委托的实例。 C# 2.0 引入了匿名方法的概念,作为一种编写可在委托调用中执行的未命名内联语句块的方式。 C# 3.0 引入了 Lambda 表达式,这种表达式与匿名方法的概念类似,但更具表现力并且更简练。 这两个功能统称为“匿名函数”。 通常,针对 .NET Framework 版本 3.5 及更高版本的应用程序应使用 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 
                    // initialization with a named method.
                    TestDelegate testDelA = new TestDelegate(M);

                    // C# 2.0: A delegate can be initialized with
                    // inline code, called an "anonymous method." This
                    // method takes a string as an input parameter.
                    TestDelegate testDelB = delegate(string s) { Console.WriteLine(s); };

                    // C# 3.0. A delegate can be initialized with
                    // a lambda expression. The lambda also takes a string
                    // as an input parameter (x). The type of x is inferred by the compiler.
                    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();
                }
            }
            /* Output:
                Hello. My name is M and I write lines.
                That's nothing. I'm anonymous and
                I'm a famous author.
                Press any key to exit.
             */
复制代码

本文摘抄自msdn,通过代码展示了C#1.0、2.0、3.0委托的不同创建方法。

 

posted on   荆棘人  阅读(176)  评论(0编辑  收藏  举报

编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示