假设我有一个系列
public class TimeSeries<T,K>
Run Code Online (Sandbox Code Playgroud)
我想构建一个具有可以存储TimeSeries
为元素的列表成员的类,所以我使用:
public class TimeSeriesSet<M> where M: TimeSeries<T, K>
Run Code Online (Sandbox Code Playgroud)
我想知道什么是正确的语法?
你可以这样做:
public class TimeSeriesSet<T, K>
{
public TimeSeries<T, K> SomeField;
}
Run Code Online (Sandbox Code Playgroud)
根本不需要使用约束.如果你实际上不打算使用它们,请不要使用泛型类型参数;)
你想要添加另一个类型参数的唯一原因是你想要一些明确的后代TimeSeries<T, K>
.在这种情况下,只需将其添加为另一个类型参数:
public class TimeSeriesSet<M, T, K>
where M: TimeSeries<T, K>
{
public M SomeField;
}
Run Code Online (Sandbox Code Playgroud)
通常,通用性倾向于传播.如果你需要泛型通用的东西,你需要两个泛型类型的参数.值得庆幸的是,类型推断通常有效.通常.