我应该为我的应用程序使用Managed C++或C#吗?

Oli*_*ops 11 .net c# managed-c++ c++-cli managed

如果您必须在C#和托管C++之间做出决定,您会选择哪个以及为什么?

托管C++相对于C#有什么好处?你更喜欢哪种语言?在什么情况下你会做出什么决定?

Ian*_*ose 22

如果我:我会使用托管C++:

  • 需要与现有的C/C++代码集成
  • 需要将现有的C/C++代码移植到.net
  • 需要使用C++中的.NET对象
  • 需要以比.net更容易的方式更复杂的方式在COM上公开.NET对象
  • 需要直接访问硬件
  • 需要调用大量非托管API

并且已经掌握了一些C++技能,因为上述任务需要经验丰富的C++程序员.大多数时候,如果公司已经拥有C++代码库,那么我只考虑托管C++,否则谁将维护托管C++代码.

在其他情况下,我总是选择C#. 即使我为系统的一部分选择托管C++,我也会尽量在C#中编写尽可能多的系统.

将管理C++视为一个桥梁构建工具包,用于在非托管的C/C++世界和.NET的托管世界之间进行.

如果您只需要从C#中调用一些简单的API,那么请参阅pinvoke.net本概述以了解如何从C#调用它们,因为C#中的几行复杂的pinvoke代码(预构建的桥)通常比引入C++更好到尚未使用它的项目.


utn*_*tim 5

托管C++相对于C#有什么好处?

C++ .net对于与C++和C代码交互很有用(即,调用外部C或C++库,为用C或C++编写的外部模块提供回调函数等.

你更喜欢哪种语言?

除了上面描述的情况(与C和C++交互)之外,我更喜欢C#.

C#更易于编写,更简单,并且专门用于使用.NET平台.C++也可以做到这一点,但它具有C++语言的所有复杂性以及使用.NET平台所需的扩展.

除非您需要与本机C++或C代码进行交互,否则在大多数情况下(例如,如果您正在编写.NET平台),最好使用C#.

通常我更喜欢C++,但是当需要为.NET编写代码时,它不会超过C#.