【发布时间】:2014-12-03 22:01:52
【问题描述】:
假设您有如下场景:
public class MyVehicle<TType, TLoc> : IDrive<TType, TLoc> where TLoc: IVehicle, IMove<TType>
TLoc 参数是否都继承自 IVehicle?此外,TLoc 之一或两者是否继承自 IMove<TType>?
如果TLoc 两个参数都没有从IVehicle 继承,我该如何正确声明?
问题:您如何区分MyVehicle 继承自什么和TLoc 是什么?
(上下文是现场编造的,试图降低我实际使用的复杂性。泛型参数的语法和功能是我的重点)
【问题讨论】:
-
只声明了一个
TLoc!其他情况参考TLoc的第一个“提及”,即TLoc的声明。试试这个就明白了:class MyVehicle<TLoc> : IDrive<TWhatLoc> { ... } -
当然,两个类型参数不能同名,所以这也是非法的:
class MyVehicle<TLoc, TLoc> { ... }
标签: c# generics inheritance multiple-inheritance