我有以下代码:为什么不能投射?
var commitmentItems = new List<CommitmentItem<ITransaction>>();
commitmentItems.Add(new CapitalCallCommitmentItem());
而且我得到以下错误:
Argument '1': cannot convert from 'Models.CapitalCallCommitmentItem' to
'Models.CommitmentItem<Models.ITransaction>'
然而,从CommitmentItem<CapitalCall>
CapitalCallCommitmentItem
继承和CapitalCall
工具ITransaction
。那么为什么错误?
这里是一个更好的例子:
CapitalCall
实现ITransaction
var test = new List<ITransaction>();
test.Add(new CapitalCall());
var test2 = new List<List<ITransaction>>();
test.Add(new List<CapitalCall>()); // error.
通读共同/反对常见问题。对于不熟悉这个主题的人来说,这是一个非常好的起点,因为在你习惯之前,它有点像一个脑筋急转弯。 http://blogs.msdn.com/b/csharpfaq/archive/2010/02/16/covariance-and-contravariance-faq.aspx – Lucero 2010-06-23 21:28:23