寻找C#语法的名称

时间:2013-02-09 12:36:54

标签: c# syntax

我已经离开C#一段时间了,现在我正在尝试阅读一些代码,我很难找到它的含义:

var server = new WebSocketServer("ws://localhost:8181");
server.Start(socket =>
{
    socket.OnOpen = () =>
    {
        Console.WriteLine("Open!");
        allSockets.Add(socket);
    };
    socket.OnClose = () =>
    {
        Console.WriteLine("Close!");
        allSockets.Remove(socket);
    };
    socket.OnMessage = message =>
    {
        Console.WriteLine(message);
        allSockets.ToList().ForEach(s => s.Send("Echo: " + message));
    };
});

socket => { .. }语法的名称是什么?我在哪里可以找到一些文字?它引入了哪个版本的C#? = () => { .. }是否相同?

2 个答案:

答案 0 :(得分:4)

它是一个lambda表达式,基本上它是定义委托的快捷方式,这是一种非常有效的方法。它在C#3中与LINQ一起引入,使其使用更加简单。语法如下:

parameters => body

通常编译器可以以某种方式推断参数的类型,这就是为什么你只看到参数的名称。

答案 1 :(得分:1)

在c#中,这种语法称为Lambda Expressions。它们自C#3.0起可用

更多关于:

Microsoft的编程指南explaining lambda expression

C# Lambda expressions: Why should I use them?

和programmersheaven.com的example