gpt4 book ai didi

.net - 不支持 C++/CLI 使用 Action<...,...> 和 Func<...>?

转载 作者:行者123 更新时间:2023-12-04 21:54:54 54 4
gpt4 key购买 nike

在 C++/CLI 的 System 命名空间中,它看起来不支持 Action 和 Func 委托(delegate)。至少不适用于多个通用参数,例如:

System::Action<int, int>^ action = nullptr;
System::Func<int, int>^ func = nullptr;

两者都会导致错误,例如:
error C2977: 'System::Action' : too many generic arguments  
error C2955: 'System::Action' : use of class generic requires generic argument list

只有单个参数 Action 有效:
System::Action<int>^ action = nullptr;

任何人都知道为什么或缺少什么来完成这项工作。我正在使用 Visual Studio 2008,该项目具有目标框架 3.5。

最佳答案

Action的位置和 Func类型因您使用的框架版本而异。

在 3.5 框架中 Func 的所有定义(通用或非通用)驻留在 System.Core.dll 中。 Action 的版本也是如此。具有 2 个或更多通用参数。 ActionAction<T1,T2>虽然在 mscorlib 中。

在 4.0 框架中 Func 的所有定义和 Action移至 mscorlib。 System.Core 中插入了类型转发器,这些转发器现在指向 mscorlib。

Silverlight 4.0 更接近于 3.5 框架解决方案。

确保您有对适用于您的解决方案的相应 DLL 的引用。

关于.net - 不支持 C++/CLI 使用 Action<...,...> 和 Func<...>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2193808/

54 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com