一尘不染

在C#中对通用参数使用“ params”关键字

c#

Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult>今天,我在C#.NET
4.5中遇到了漂亮的代表。我以为16是一个任意的停止位置(哪些方法具有16个以上的参数?),但是这使我想到:
在C#中是否可以指定泛型类型可以具有任意数量的类型参数? 以类似于方法的params关键字为方法允许任意数量的参数的方式。像这样:

public class MyInfiniteGenericType<params T[]> { ... }

然后,您可以在类内部的位置通过枚举它们或使用T[index]与方法params内部相同的方式来访问类型参数。

我从来没有亲自使用过它,但是Func代表将是一个使用它的理想场所。不需要16种不同类型的Func!

所以我的问题是,这可以在C#中以任何方式完成, 如果不是,那是一个愚蠢的想法 吗?


阅读 467

收藏
2020-05-19

共1个答案

一尘不染

C#中是否可以指定泛型类型可以具有任意数量的类型参数?

不,恐怕C#没有这样的东西。

从根本上讲Func<T>Func<T1, T2>就CLR而言,它们是完全不相关的类型,没有什么params可以指定多个类型参数了。

至于它的效用:我可以看到它有用的情况,但是我怀疑它们很少见,意味着该功能没有超过“收益/成本”的门槛。(请注意,几乎肯定也需要更改CLR。)

2020-05-19