c# - 在 C# 中使用 "params"关键字作为泛型参数

标签 c# generics

我遇到了美丽的 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/

相关文章:

generics - E0119 通用特征实现错误

c# - 泛型接口(interface)的非泛型类实现不被继承

c# - 泛型方法中的条件类型

C# 如何验证 Root-CA-Cert 证书 (x509) 链?

c# - 托盘中更好的通知

c# - 重复使用带有 `using` 语句的局部变量与重复调用非局部变量?

C# 批量复制到 SQL 表类型问题

c# - 通用 ServerControl 语法?

java - 无法编译使用通用列表参数调用接口(interface)中方法的类

c# - WPF 应用程序(不是浏览器)和导航