以下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的实现)不同。工作)。那是对的吗?有解决方法吗?
答案 0 :(得分:0)
显然,您需要做的就是添加一个显式强制转换:
b1
(我确认这不会消耗运行时间)