gpt4 book ai didi

c# - 为什么这个类型转换不起作用?

转载 作者:行者123 更新时间:2023-11-30 18:55:35 24 4
gpt4 key购买 nike

我有以下代码:

  var commitmentItems = new List<CommitmentItem<ITransaction>>();
commitmentItems.Add(new CapitalCallCommitmentItem());

我得到以下错误:

Argument '1': cannot convert from 'Models.CapitalCallCommitmentItem' to
'Models.CommitmentItem<Models.ITransaction>'

然而,CapitalCallCommitmentItem继承自 CommitmentItem<CapitalCall> , 和 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.

最佳答案

因为那需要 CommitmentItem<CapitalCall>是协变的,因此它可以分配给 CommitmentItem<ITransaction> ,目前不支持。

C# 4 添加了对接口(interface)协变和逆变的支持,但不支持类。

因此,如果您使用的是 C# 4,则可以使用类似 ICommitmentItem<> 的接口(interface)而不是 CommitmentItem<> ,您也许可以通过使用 C# 4 的新功能获得您想要的。

关于c# - 为什么这个类型转换不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3105590/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com