这个奇怪的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至少可以;在那里,您甚至可以使用一些邪恶的技巧来使用未绑定的委托调用实例方法。