gpt4 book ai didi

c# - 使用括号将匿名方法分配给委托(delegate)会产生编译器错误?

转载 作者:太空狗 更新时间:2023-10-29 17:32:52 24 4
gpt4 key购买 nike

给定以下示例代码:

static void SomeMethod()
{
Action<int,int> myDelegate;

//...

myDelegate = delegate { Console.WriteLine( 0 ); };
myDelegate = delegate() { Console.WriteLine( 0 ); }; // compile error

}

有什么区别

myDelegate = delegate { Console.WriteLine( 0 ); };

myDelegate = delegate() { Console.WriteLine( 0 ); };

?

在这个例子中,第二条语句产生编译错误,而第一条语句没有。

最佳答案

一个匿名方法的语法是delegate parameter-list { statement-list }。参数列表是可选的。

如果您省略 参数列表,则匿名方法与参数未标记为“out”的任何委托(delegate)类型兼容。

如果您提供参数列表,那么它必须与委托(delegate)参数类型完全匹配。

在第一种情况下,您忽略了它,而在第二种情况下,您提供了它但与委托(delegate)参数不匹配。所以delegate{}是合法的,delegate (int i, int j){}是合法的,但是delegate(){}不是.

无论如何,您最好使用 lambda 表达式;它是新代码中更常见的语法:(i, j)=>{ };

关于c# - 使用括号将匿名方法分配给委托(delegate)会产生编译器错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10221543/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com