这是一个非常普遍的问题。我是一个自学的C#程序员。如果我了解C++,那么我想要开发的项目会变得更加容易(从长远来看)。从C#转向C++有多容易?我应该注意哪些陷阱?如果我在使用VS2010,是否可以同时在同一项目中编写C#和C++代码(不在同一类中)?
这是一个非常普遍的问题。我是一个自学的C#程序员。如果我了解C++,那么我想要开发的项目会变得更加容易(从长远来看)。从C#转向C++有多容易?我应该注意哪些陷阱?如果我在使用VS2010,是否可以同时在同一项目中编写C#和C++代码(不在同一类中)?
shared_ptr
,那么你至少也应该提到它与GC相比的明显问题(循环引用、多线程、性能),否则这可能会给不知情的人带来有趣的惊喜。小提示:引用计数高效吗?实际上并不是。 - Voo我是否可以在同一个项目中用C#和C++编程?
答案是否定的。你可以使用Managed C++ & C++,但如果你正在使用C#,则无法在同一项目中同时使用C#和C++代码。
从C#转到C++有多容易?
这有点主观,但我认为这将是一个非常困难的步骤。C++是一种不同的语言,所以学习起来就像学习一门新语言一样难 :) 再次强调,这是主观的,所以我不会详细解释。
因为您在使用.NET,我假设您正在使用Visual Studio?
使用/clr
编译器选项将C#和C++合并到同一个程序中非常容易。您的C++代码可以包括普通的、符合标准的C++类,以及为从C#使用而设计的ref class
.NET对象。这两者是独立的,但可以通过ref class
到本机class
的指针以及从本机class
到ref class
的gcroot
模板相互访问。
请注意,我说的是“在同一个程序”中,而不是“在同一个项目”中。您将不得不将其分成两个部分,一个是C#项目,另一个是C++/CLI项目,并且一个将是另一个加载的DLL。还有一个技巧可以在构建过程中将两者结合在一起,使您最终获得单个可执行文件,但通常不值得那么麻烦。
请注意,您可能会发现我编写的这个智能指针类很有用,它可以使从ref class
.NET对象使用本机class
对象变得更加容易。