我已经与C#广泛合作,但是,我正在开始一个项目,我们的客户希望所有代码都用C++而不是C#编写.该项目将是托管(.NET 4.0)和本机C++之间的混合.因为我总是更喜欢C#到C++以满足我的.NET需求,我想知道在使用C#和托管C++之间是否存在任何重要的差异?
我们非常感谢您对此的任何见解.
编辑查看维基百科的托管C++代码表明新规范是C++/CLI,并且不推荐使用"托管C++".更新了标题以反映这一点.
C++/CLI是一种完整的.NET语言,就像其他.NET语言一样,它在托管上下文中运行良好.就像在C#中使用本机调用一样,在本机C++和托管C++中交错可能会导致一些问题.话虽如此,如果您正在使用大量本机C++代码,我宁愿使用C++/CLI而不是C#.有很多问题可以通过编写C++/CLI来解决,就像你编写C#一样,也不像编写本机C++那样编写它.这是它自己的事情.
我已经参与了几个C++/CLI项目,我采取的方法实际上取决于应用程序的不同级别对本机C++代码的暴露程度.如果应用程序的大多数核心是本机的,并且本机代码和托管代码之间的集成点有点模糊,那么我将始终使用C++/CLI.C++/CLI中控件的好处将超过其问题.如果你确实有明确的交互点可以调整或抽象,那么我强烈建议创建一个C++/CLI桥接层,上面有C#和C++.这样做的主要原因是C#工具比C++/CLI的相应工具更成熟,更普遍.话虽如此,我一直在努力的项目取得了成功,并不是另一个指向的噩梦.
我还要确保你理解为什么客户会朝着这个方向前进.如果他们的想法是他们有一堆C++开发人员并且他们希望让他们更容易编写托管代码,我会向客户提出,学习C#可能比学习C++/CLI更具挑战性.
如果客户端认为C++/CLI更快,那就是错误,因为它们都编译成IL.但是,如果客户端具有大量现有或正在进行的本机C++开发,那么当前路径实际上可能是最佳的.
| 归档时间: |
|
| 查看次数: |
9187 次 |
| 最近记录: |