假设我有一个系列

public class TimeSeries<T,K>


我想构造一个具有列表成员的类,该成员可以将TimeSeries存储为元素,因此我使用:

public class TimeSeriesSet<M> where M: TimeSeries<T, K>


我想知道正确的语法是什么?

最佳答案

您可以执行以下操作:

public class TimeSeriesSet<T, K>
{
  public TimeSeries<T, K> SomeField;
}


完全不需要使用约束。如果您实际上不打算使用泛型类型参数,则不要使用它们;)

您想要添加另一个类型参数的唯一原因是,如果您想要TimeSeries<T, K>的某些显式后代。在这种情况下,只需将其添加为另一个类型参数即可:

public class TimeSeriesSet<M, T, K>
  where M: TimeSeries<T, K>
{
  public M SomeField;
}


通常,通用性倾向于传播。如果您需要通用的东西而不是通用的东西,则需要两个通用类型参数。值得庆幸的是,类型推断通常是可行的。通常。

关于c# - 使用“where”关键字将通用候选对象限制为类,这也是通用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31923779/

10-11 05:59