c++-cli - 将字典中的所有值转换为 C++/CLI 中的列表
问题描述
我有一个字典,我想将其中的值转换为列表。在 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);
推荐阅读
- etl - 从 Snowflake 中的表流中手动刷新数据
- python - 在python中解包大列表
- php - 如何更改 WooCommerce 结帐文本?
- node.js - Shopify Storefront 上的嵌入式自定义 NextJS 应用程序更改资产文件路径
- python - 尝试使用 camelot-py 绘制 pdf 表格,但没有表格出现
- gke-networking - GKE Windows 节点,健康检查
- c# - NServiceBus 7 并发疑惑
- python-3.x - 优化 FOR LOOP 或替代它
- amazon-web-services - 通过 cloudformation 在任意可用区配置 EC2 实例
- java - 谷歌 mlkit 的条码扫描仪无法识别任何条码