Arrays Can';t将托管阵列转换为IReadOnlyList

Arrays Can';t将托管阵列转换为IReadOnlyList,arrays,c++-cli,Arrays,C++ Cli,以下C#代码编译并运行良好: private static IReadOnlyList<int> Foo() { return new int[10]; } private静态IReadOnlyList Foo() { 返回新整数[10]; } 但是,(假定)等效的C++/CLI代码给出了一个编译错误: 错误C2440“返回”:无法从“cli::array^”转换为“System::Collections::Generic::IReadOnlyList^” static-

以下C#代码编译并运行良好:

private static IReadOnlyList<int> Foo()
{
    return new int[10];
}
private静态IReadOnlyList Foo()
{
返回新整数[10];
}
但是,(假定)等效的C++/CLI代码给出了一个编译错误:

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

static-IReadOnlyList^Foo()
{
返回新数组(10);
}

错误消息听起来好像C++/CLI有自己的特殊数组类,它在后台使用,这与C#所做的不同,C#所做的不同,C#所做的不同,C#所做的不同,C#所做的不同,C#C#所做的不同,C#C#所做的不同之处在于C#C#所做的不同,C#。对吗?有解决办法吗?

显然,您只需添加一个显式强制转换:

static IReadOnlyList<int>^ Foo()
{
    return (IReadOnlyList<int>^)gcnew array<int>(10);
}
static-IReadOnlyList^Foo()
{
return(IReadOnlyList^)gcnew数组(10);
}
(我确认这不会破坏运行时)

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