我已经离开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#? = () => { .. }
是否相同?
答案 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