c# - 如何在 C# 中返回委托(delegate)函数或 lambda 表达式?

标签 c# generics lambda

我正在尝试编写一个方法来返回其自身的一个实例。 伪代码为

Func<T,Func<T>> MyFunc<T>(T input)
{
    //do some work with input
    return MyFunc;
}

看起来很简单。但是我在定义返回类型时遇到问题。 返回类型应该是委托(delegate)

 which takes T as parameter, then returns a function 
 which takes T as parameter, then returns a function 
 which takes T as parameter, then returns a function

   ...recursive definition

我确信有一些我没有注意到的细微之处。有人可以为我指出吗? 谢谢。

最佳答案

你可以这样做:

delegate F<T> F<T>(T obj);

F<T> MyFunc<T>(T obj)
{
    return MyFunc;
}

但它几乎没有用。你唯一真正能做的就是像这样的事情,这很奇怪:

void Main()
{
    MyFunc(1)(2)(3)(4);
}

delegate F<T> F<T>(T obj);

F<T> MyFunc<T>(T obj)
{
    Console.WriteLine(obj);
    return MyFunc;
}

关于c# - 如何在 C# 中返回委托(delegate)函数或 lambda 表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5813752/

相关文章:

c# - 从 MinValue 迭代到 MaxValue 并溢出

c# - WCF 客户端错误处理

generics - 问号在类型参数绑定(bind)中意味着什么?

java - 为什么我不能用接口(interface)来做这个?

java - TableColumn::setOnEditCommit() 中的 Lambda 运算符

c# - 递增数组中的值

c# - 列表框 Selected.value 抛出 null 异常

Scala:如何定义输入为 (f, args) 且输出为 f(args) 的函数?

当我声明与 lambda 中的变量同名的变量时,C# 变得疯狂

java - 'Comparable<T>' 应该是 'Functional interface' 吗?