我创建了一个具有两个通用参数的方法,其中一个参数(itemsToAdd
)必须与下一个参数(inputList
)的通用参数具有相同的类型。
请参阅此演示代码:
public class GenericsDemo
{
public void AddToList<TList, TItems>(TList inputList, params TItems[] itemsToAdd)
where TItems : IConvertible
where TList : IEnumerable<TItems>
{
IEnumerable<IConvertible> someOtherList;
// Sounds good, doesn't work..
//someOtherList = inputList;
// This works
someOtherList = (IEnumerable<IConvertible>)inputList;
}
}
我希望可以将
inputList
直接分配给IEnumerable<IConvertible> someOtherList
,但是需要强制转换。为什么需要演员表? 最佳答案
协方差仅适用于类,不适用于结构(Source)。
因此,如果将TItems
限制为引用类型,则代码将编译(fiddle):
where TItems : class, IConvertible