在Func <T>上创建泛型类型约束

hal*_*ton 8 c# lambda expression

我想知道这是否可行:

public class Foo<T> where T : Func<T>
Run Code Online (Sandbox Code Playgroud)

要么

public class Foo<T> where T : Func<>
Run Code Online (Sandbox Code Playgroud)

似乎编译器告诉我它不可能.我想我可以在构造函数中抛出运行时异常,但是希望它有编译器错误.

这样做的方法有哪些?

Kyl*_*ran 6

不幸的是,看起来你运气不好.Func<>并且Action<>都是委托类型,不能用作泛型类型约束.

这个答案总结得很好 C#Generics不允许委托类型约束