在Managed C ++中是否有优势胜过C#?您更喜欢哪种语言?在什么情况下会做出什么决策?
如果我需要:
我会使用托管C++,前提是我已经具备了一定的C++编程技能。大多数情况下,我只会考虑使用托管C++,如果公司已经有了C++代码库,否则谁来维护托管C++代码。
在其他情况下,我总是选择C#。即使我选择使用托管C++作为系统的一部分,我也会尽可能多地使用C#编写系统。
将托管C++视为一个桥梁建造工具包,用于在C/C++的非托管世界和.NET的托管世界之间进行切换。
如果你只需要从C#调用几个简单的API,请参见pinvoke.net和this overview,找出如何从C#调用它们,因为在不使用C++的项目中,几行复杂的PInvoke代码(预构建的桥梁)通常比引入C++更好。
管理的C++相对于C#有什么好处?
C++.net适用于与C++和C代码交互(即调用外部C或C++库,为以C或C++编写的外部模块提供回调函数等)。
你更喜欢哪种语言?
除了上述情况(与C和C++交互),我更喜欢使用C#。
C#更易于编写,更简单,并专门针对.NET平台使用。 C++也可以做到这一点,但它具有C++语言的所有复杂性以及使用.NET平台所需的扩展。
除非您需要与本机C++或C代码交互,否则在大多数情况下最好使用C#(即如果您正在为.NET平台编码)。
通常我更喜欢C ++,但是当需要为.NET编码时,C#更胜一筹。
托管C++非常适合与C++进行交互:例如,如果您有一个.NET应用程序,而您的程序集必须与作为C++ .lib文件提供的本机接口进行交互(我不止一次遇到过这种情况),或者与漂亮的C++ API进行交互。
例如:Rithmic(你可能从未听说过)直到最近仅支持C++ API。如果您尝试从C#访问它们-祝你好运;) 托管C++允许我访问他们的API并公开漂亮的.NET对象。
基本上是互操作性。托管C++在与低级C / C++ API的互操作方面真正闪耀。
当我需要构建大量C++非托管代码的新.NET组件时,我使用了托管C++。
我创建了一个特定的类,用于在旧的C++代码中向前和向后传递一些对象。
我个人没有写过太多的托管C++代码,也没有阅读过太多。但是从我所看到的来看,它看起来太复杂和不连贯了。话虽如此,如果你真的很擅长C++,并且学习新语言的习惯用法和模式会带来太大的风险,那么你可能想使用托管C++。
如果你相当熟练地掌握了C#,那么就使用C#吧。如果你刚开始学习C++和C#,我认为C#是更容易上手的。
C++.NET
和C#
:只有C++.NET
让我头疼不已,感到非常困惑!它可能有其用途,但是在我的看法中,混合三个层次(C
,C++
,.NET
)真的很难看。 - ereOn