9

我最近安装了 VS2012。在 VS2010 下编译良好的 C++ 项目(使用 .Net 4.0)HashSet<T>在 VS2012 上无法识别。我什至尝试使用以下声明进行明确:

System::Collections::Generic::HashSet< String^ >^ _reasons;

但这只会导致错误:

error C2039: 'HashSet' : is not a member of 'System::Collections::Generic

文档说它在 System.Collections.Generic 中。C++ 编译器不这么认为。

关于它去哪里的任何想法?

4

1 回答 1

13

HashSet<> 是 .NET 的后期添加,它在 .NET 3.5 中可用。命名空间较旧,自 .NET 2.0 起,mscorlib.dll 包含 System::Collections::Generic 中的类,Stack<> 和 Queue<> 等类。HashSet<> 被添加到 .NET 3.5 的程序集 System.Core.dll 中,他们不想修改 2.0 程序集。

因此,您必须添加对 System.Core 的引用以避免错误消息。

当您遇到这样的错误时,请始终参考 MSDN 文档,它表明您需要程序集参考。

于 2012-11-26T21:19:26.133 回答