c# - 从 C# 迁移到 C++(加上在同一解决方案中使用两者)

标签 c# c++

这是一个非常笼统的问题。我是一名自学成才的“程序员”,使用 C# 编程。如果我知道 C++,我想从事的项目会变得容易得多(从总体上看)。从 C# 迁移到 C++ 有多容易?我应该注意什么陷阱?如果我使用的是 VS2010,我可以在 C# 和 C++ 中编程(不在同一个类,而是同一个项目中)一些东西吗?

最佳答案

从 C# 迁移到 C++ 并不容易。基本语法可以看起来相同(例如 if、for...),但存在深层差异,例如C# 中不存在 RAII 模式和堆栈语义变量,其析构函数在超出范围时被调用等。

此外,C# 使用非确定性垃圾收集器(它可以用于内存资源,但对其他类型的资源无用)。相反,使用现代 C++,您可以使用模板和智能指针(如 std::/boost::*shared_ptr*),它们允许您拥有 deterministic 引用计数的“垃圾收集”,即非常高效,并且对内存和非内存资源(如文件句柄、套接字、纹理...)均有效。

此外,C# 泛型与 C++ 模板有很大不同(C++ 模板非常强大,并且允许高级编程称为模板元编程)。

在 VS2010 中,您可以拥有一个同时托管 C++ 和 C# 项目的解决方案。要在两个世界(C++ 的原生世界和 .NET/C# 的托管世界)之间进行通信,您可以使用 C++/CLI 作为一种桥接层。

在 Windows 8 中应该引入一种新技术,称为 WinRT(基于 COM),它允许跨语言通信。在这种情况下,您可以使用带有 WRL(基于模板的库)或 C++/CX 语言扩展的 C++ 来构建可从 C# 和 .NET 使用的 C++ 组件。

快乐学习。

关于c# - 从 C# 迁移到 C++(加上在同一解决方案中使用两者),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8864547/

相关文章:

java - 方法调用成本是否随着更多接口(interface)实现而保持不变

c# - WebDav Word 2016 checkin 按钮

c# - 将结构编码到非托管数组

C++ 库/框架,用于机器学习中混合模型的 API

c++ - 在 C++ 中类名后使用冒号

c++ - 如何使用 OpenNI 获取 Kinect 序列号?

c# - 不理解代表/事件和发布者/订阅者的要点

C# XML 序列化数组和多个类

c++ - 更改对话框的背景颜色 win32api

c++ - 在 typedef 结构体上使用 sizeof 运算符