使用C#4.0中的匿名函数,为什么我无法定义内联委托

时间:2010-03-03 05:53:48

标签: c# c language-features

让代表拥有保留定义类型的优点是什么。

例如在c中,如果我想定义一个带有指向函数的指针的函数,我可以简单地定义

void F(bool (*pFn)(int));

在c#中我必须采取额外的步骤,首先定义委托类型相似,如果我必须在c中创建一个typedef,然后才能定义上面的函数

delegate bool del(int s);
void F(del d){...}

我发现c#风格不那么清晰和灵活。

答:我没有意识到这在C#中是可行的 B:通过引入c类型声明系统的复杂性,这是一个不好的语言特性。


让我澄清一下,我知道fucn可用,我想知道是否有办法定义任意代表。

2 个答案:

答案 0 :(得分:5)

.NET 3.5中的

Func将允许您拥有最多4个参数和1个返回值。 .NET 4中的Func将允许您拥有最多16个参数和1个返回值。如果你需要更多,你可能应该得到一台量子计算机。

此外,除了返回值之外,Action在.NET 3.5和.NET 4中具有相同的限制。

答案 1 :(得分:3)

这个怎么样?

void F(Func<int, bool> d){...}