我遇到了美丽的 Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult>
今天在 C# .NET 4.5 中委托(delegate)。我假设 16 是一个任意的停止位置(哪些方法有超过 16 个参数?)但它让我思考:是否可以在 C# 中指定泛型类型可以有任意数量的类型参数? 类似于方法的 params 关键字允许方法的任意数量的参数。像这样:
public class MyInfiniteGenericType<params T[]> { ... }
然后您可以在类中的哪个位置通过枚举或使用 T[index]
来访问类型参数与 params
相同允许在方法内。
我个人从未用过它,但 Func 委托(delegate)将是使用它的完美场所。不需要 16 种不同类型的 Func!
所以我的问题是,这是否可以在 C# 中以任何方式完成,如果不能,这是一个愚蠢的想法吗?
最佳答案
is it possible in C# to specify that a generic type can have any number of type arguments?
不,恐怕 C# 没有类似的东西。
从根本上说 Func<T>
和 Func<T1, T2>
就 CLR 而言,它们是完全不相关的类型,没有什么比 params
指定多个类型参数。
至于它的实用性:我可以看到它可能有用的情况,但我怀疑它们很少见,意味着该功能没有超过“ yield /成本”阈值。 (请注意,它几乎肯定也需要 CLR 更改。)
关于c# - 在 C# 中使用 "params"关键字作为泛型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15417174/