如何在C#中声明带有泛型类型的Func?
泛型Func委托的正确定义方式
首先明确:你写的Func<T><List<T>, T>这种语法是不可行的,C#里的泛型委托声明规则不支持这种写法。要实现你想要的泛型委托逻辑,有两种直接的解决方案:
方式一:直接用内置泛型Func委托
C#已经内置了不同参数数量的泛型Func委托,你需要的是「输入List<T>、返回T」的委托,对应内置的Func<List<T>, T>,直接这么写就行:
Func<List<T>, T> myFunc = inputList => inputList.First();
注意:这段代码需要放在泛型上下文中(比如泛型方法、泛型类内部),如果你要指定具体类型,也可以直接替换T:
Func<List<string>, string> myFunc = inputList => inputList.First();
方式二:自定义泛型委托(按需使用)
如果内置委托满足不了你的特殊需求,也可以自己定义泛型委托类型:
public delegate T MyGenericFunc<T>(List<T> inputList); // 使用示例 MyGenericFunc<int> myFunc = inputList => inputList.First();
你最初的写法错误在于,C#中泛型类型的参数是放在同一对尖括号里的,多参数用逗号分隔,而非嵌套尖括号。
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

