C#:递归泛型

C#:递归泛型,c#,.net,typescript,generics,C#,.net,Typescript,Generics,是否可以在C#中定义递归泛型?或者更具体地说:这段代码(TypeScript)可以翻译成C吗 type U=(a:U)=>T; 函数f(a:U):T{ 返回a(a) } 函数g(a:T):布尔型{ 返回错误 } 控制台日志(f(g)) 类型U在其定义中使用自身 谢谢你如果我正确理解了打字脚本,这可能是C#中最接近的等价物: 我们不能直接让f成为委托,因为我们必须打开泛型参数,这是C#不允许的。你能描述一下你试图用这种递归实现什么,你尝试过什么吗?这是可能的;泛型递归和继承可用于 type U&

是否可以在C#中定义递归泛型?或者更具体地说:这段代码(TypeScript)可以翻译成C吗

type U=(a:U)=>T;
函数f(a:U):T{
返回a(a)
}
函数g(a:T):布尔型{
返回错误
}
控制台日志(f(g))
类型
U
在其定义中使用自身


谢谢你

如果我正确理解了打字脚本,这可能是C#中最接近的等价物:


我们不能直接让
f
成为委托,因为我们必须打开泛型参数,这是C#不允许的。

你能描述一下你试图用这种递归实现什么,你尝试过什么吗?这是可能的;泛型递归和继承可用于
type U<T> = (a: U<T>) => T;

function f<T>(a: U<T>): T {
    return a(a)
}

function g<T>(a: T): boolean {
    return false
}

console.log(f(g))
delegate T U<T>(U<T> a);

static void Main() {
    T f<T>(U<T> a) => a(a);
    bool g<T>(T a) => false;

    Console.WriteLine(f<bool>(g));
}
static void Main() {
    T f<T>(U<T> a) => a(a);
    U<bool> g = a => false;

    Console.WriteLine(f(g));
}