C++ cli 将字典中的所有值转换为C++/CLI

C++ cli 将字典中的所有值转换为C++/CLI,c++-cli,C++ Cli,我有一本字典,我想把它的值转换成一个列表。在C#中,我将使用这种方法: var dict = new Dictionary<int, int>(); var list = dict.Values.ToList(); var dict=newdictionary(); var list=dict.Values.ToList(); 因此,我想在C++/CLI中执行同样的操作: auto dict = gcnew Dictionary<int, int>(); auto l

我有一本字典,我想把它的值转换成一个列表。在C#中,我将使用这种方法:

var dict = new Dictionary<int, int>();
var list = dict.Values.ToList();
var dict=newdictionary();
var list=dict.Values.ToList();
因此,我想在C++/CLI中执行同样的操作:

auto dict = gcnew Dictionary<int, int>();
auto list = dict->Values->ToList(); // error C2039
auto dict=gcnew Dictionary();
自动列表=dict->Values->ToList();//错误C2039
但由于错误,这不起作用:

Error   C2039   
'ToList': is not a member of 'System::Collections::Generic::Dictionary<int,int>::ValueCollection'   
错误C2039
“ToList”:不是“System::Collections::Generic::Dictionary::ValueCollection”的成员
我不知道我做错了什么,我是C++/CLI新手

最小可复制示例:

#using "System.Linq.dll"

using namespace System::Collections::Generic;
using namespace System::Linq;

int main()
{
    auto dict = gcnew Dictionary<int, int>();
    auto list = dict->Values->ToList();
}
#使用“System.Linq.dll”
使用命名空间System::Collections::Generic;
使用名称空间系统::Linq;
int main()
{
auto dict=gcnew Dictionary();
自动列表=dict->Values->ToList();
}
汇编时使用:

cl /clr test.cpp
Microsoft (R) C/C++ Optimizing Compiler Version 19.16.27035
for Microsoft (R) .NET Framework version 4.08.4121.0
Copyright (C) Microsoft Corporation.  All rights reserved.

test.cpp
test.cpp(10): error C2039: 'ToList': is not a member of 'System::Collections::Generic::Dictionary<int,int>::ValueCollection'
cl/clr test.cpp
Microsoft(R)C/C++优化编译器版本19.16.27035
适用于Microsoft(R).NET Framework版本4.08.4121.0
版权所有(C)微软公司。版权所有。
test.cpp
test.cpp(10):错误C2039:“ToList”:不是“System::Collections::Generic::Dictionary::ValueCollection”的成员

您应该调用
ToList()
作为常规静态方法:

Linq::Enumerable::ToList(list);

您是否已将命名空间
Linq
导入
C++
示例:
使用命名空间系统::Linq
?@iliartushev-YesIt似乎
C++CLI
不支持使用语法
obj.ExtMethod(args)
调用扩展方法。您应该调用
ToList
作为常规静态方法:
Linq::Enumerable::ToList(list)
@IliarTurdushev我提供了一个显示错误的可编译示例。您的评论应该是答案;)但也许我的问题是重复的
Linq::Enumerable::ToList(list);