HashSet <T>在哪里进入VS2012?

Rob*_*b R 10 c++-cli hashset visual-studio-2012

我最近安装了VS2012.在VS2010下编译好的C++项目(.Net 4.0)HashSet<T>在VS2012上无法识别.我甚至试图明确遵循以下声明:

System::Collections::Generic::HashSet< String^ >^ _reasons;
Run Code Online (Sandbox Code Playgroud)

但这只会导致错误:

error C2039: 'HashSet' : is not a member of 'System::Collections::Generic
Run Code Online (Sandbox Code Playgroud)

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

关于去哪里的任何想法?

Han*_*ant 14

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

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

当出现这样的错误时,请务必返回MSDN文档,它表明您需要组装参考.

  • 很好的答案,但为了帮助像我这样的其他新c ++人,这是我的参考看起来修复它:#using <System.Core.dll> (2认同)