假设我有一个系列
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/