无法将托管数组转换为IReadOnlyList

时间:2019-08-14 13:14:35

标签: arrays c++-cli

以下C#代码可以编译并正常运行:

private static IReadOnlyList<int> Foo()
{
    return new int[10];
}

但是,(假定的)等效的C ++ / CLI代码给出了编译错误:

  

错误C2440'返回':无法从'cli :: array ^'转换为'System :: Collections :: Generic :: IReadOnlyList ^'

static IReadOnlyList<int>^ Foo()
{
    return gcnew array<int>(10);
}

该错误消息听起来好像C ++ / CLI在引擎盖下使用了自己的特殊数组类,这与C#的实现和未实现IReadOnlyList(或IList或ICollection; IEnumerable的实现)不同。工作)。那是对的吗?有解决方法吗?

1 个答案:

答案 0 :(得分:0)

显然,您需要做的就是添加一个显式强制转换:

b1

(我确认这不会消耗运行时间)