gpt4 book ai didi

.net - 编译器错误 : Cannot convert from 'List' to 'IList'
转载 作者:行者123 更新时间:2023-12-01 09:25:51 25 4
gpt4 key购买 nike

如何更改以下代码以使其编译? (除了将 strings 转换/更改为 List<object> 之外)。

Action<IList<object>> DoSomething = (list) => { /*list is never modified*/ };
var strings = new List<string>() { "one", "two" };
DoSomething(strings);

最佳答案

正如编译器错误所示,您不能转换 IList<string>IList<object> .这是因为 IList<T>接口(interface)对于 T不变的 .想象一下,如果你做了这样的事情:

Action<IList<object>> DoSomething = (list) => list.Add(1);

这对 IList<object> 有效但不是 IList<string> .

只要您不尝试修改集合,一个简单的解决方案就是更改 IList<T>IEnumerable<T> ,这是关于 T协变 :

Action<IEnumerable<object>> DoSomething = (list) => { };
var strings = new List<string>() { "one", "two" };
DoSomething(strings);

进一步阅读

关于.net - 编译器错误 : Cannot convert from 'List<string>' to 'IList<object>' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24375125/

25 4 0