我有一个字典,我想把它转化为一个列表。在C#中,我会使用这种方法。
var dict = new Dictionary<int, int>();
var list = dict.Values.ToList();
所以我想在C++CLI中做同样的事情:
auto dict = gcnew Dictionary<int, int>();
auto list = dict->Values->ToList(); // error C2039
但这行不通,因为出现了错误。
Error C2039
'ToList': is not a member of 'System::Collections::Generic::Dictionary<int,int>::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();
}
编译:
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'
targetType.ExtensionMethod(args);
你应该打电话给我 ToList()
作为一个普通的静态方法。
Linq::Enumerable::ToList(list);