这个奇怪的lambda C#操作符是干什么的?

这个奇怪的lambda C#操作符是干什么的?,c#,lambda,C#,Lambda,查看一些源代码,我找到了这个操作符 () => { } 通过阅读MSDN,我现在知道它是lambda操作符,但是它对()通过{}有什么影响呢?它用作类构造函数的参数。它是一个操作(无效,无参数)委托,其主体不做任何操作。当需要非null委托时(可能是为了简化回调或事件调用,因为调用null是一个错误),这非常有用,但您没有什么特定的事情要做。这可能是用于构造函数中的操作参数。通过执行()=>{}给对象一个有效的操作来执行,该操作在被调用时不做任何事情。它可以被称为空委托。它什么也不做,但

查看一些源代码,我找到了这个操作符

() => { }

通过阅读MSDN,我现在知道它是lambda操作符,但是它对()通过{}有什么影响呢?它用作类构造函数的参数。

它是一个
操作
(无效,无参数)委托,其主体不做任何操作。当需要非null委托时(可能是为了简化回调或事件调用,因为调用
null
是一个错误),这非常有用,但您没有什么特定的事情要做。

这可能是用于构造函数中的操作参数。通过执行
()=>{}
给对象一个有效的操作来执行,该操作在被调用时不做任何事情。

它可以被称为空委托。它什么也不做,但是在不检查
null
s的情况下调用它是安全的。某种占位符

我是这样使用它的:

    event Action SafeEvent = () => { };

    event Action NullableEvent;        

    void Meth()
    {
        //Always ok
        SafeEvent();

        //Not safe
        NullableEvent();

        //Safe
        if (NullableEvent != null)
            NullableEvent();
    }
()参数列表

=>lambda调用


{}已执行代码的范围(可选,如果是一行程序)

这可能会帮助您更清楚地理解

()=>{}

相当于

函数(){}

另一个例子:

(i) =>{i+=1;}

相当于

函数(inti){i+=1;}


()将成为{}中包含的函数的参数。具体来说,您需要知道什么?这是curlify parenthasis操作符。它使代码看起来更华丽。它是巴洛克时期计算机先驱发明的非常感谢,我现在明白了。我猜它们的用途与C/C++中的函数指针相同?@Tanner你是说一般的委托?差不多,是的-但是代理提供了更多的类型安全性、对meta(MethodInfo)的访问和自动多播功能。♦ 我认为委托的主要区别在于它们携带对象上下文。@Andrey it至少可以;在那里,您甚至可以使用一些邪恶的技巧来使用未绑定的委托调用实例方法。