C#:递归泛型
是否可以在C#中定义递归泛型?或者更具体地说:这段代码(TypeScript)可以翻译成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&
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));
}