Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 您是否推荐原生C++;到C++\CLI班次? 过去几年来,我一直是一个本地C++程序员。现在我们正在从头开始一个新项目。那么,您是如何看待以丢失与平台无关的代码为代价而转向C++\CLI的呢。使用C++\CLI有什么特别的好处吗?_C#_C++_C++ Cli - Fatal编程技术网

C# 您是否推荐原生C++;到C++\CLI班次? 过去几年来,我一直是一个本地C++程序员。现在我们正在从头开始一个新项目。那么,您是如何看待以丢失与平台无关的代码为代价而转向C++\CLI的呢。使用C++\CLI有什么特别的好处吗?

C# 您是否推荐原生C++;到C++\CLI班次? 过去几年来,我一直是一个本地C++程序员。现在我们正在从头开始一个新项目。那么,您是如何看待以丢失与平台无关的代码为代价而转向C++\CLI的呢。使用C++\CLI有什么特别的好处吗?,c#,c++,c++-cli,C#,C++,C++ Cli,对您有什么好处吗?您可能会失去切换到其他操作系统的能力 > P>我将根据我的经验介绍C++、C和.net: 如果您想采用.NET方式,请使用C# 如果不想要.NET,使用传统的C++ . LI>如果要用C++来实现传统的C++与.NET代码的桥接。使用.NET调用C++类和C++调用.NET类。 如果您不需要C++/CLI,我认为直接使用它没有任何意义。除非您正在与.NET应用程序集成,否则不要麻烦。当然不要使用STL/CLR,因为它的性能非常糟糕 使用.NET类库很容易改变这个开关,但也

对您有什么好处吗?您可能会失去切换到其他操作系统的能力

> P>我将根据我的经验介绍C++、C和.net:

  • 如果您想采用.NET方式,请使用C#
  • 如果不想要.NET,使用传统的C++ .
  • <> LI>如果要用C++来实现传统的C++与.NET代码的桥接。使用.NET调用C++类和C++调用.NET类。

如果您不需要C++/CLI,我认为直接使用它没有任何意义。

除非您正在与.NET应用程序集成,否则不要麻烦。当然不要使用STL/CLR,因为它的性能非常糟糕

使用.NET类库很容易改变这个开关,但也有其他选择。如果这样做,您将无法如此轻松地移植代码

OSS的兴起似乎也在增加,因此现在可能是研究使用跨平台库和工具的时候了。部署linux应用程序比部署windows应用程序容易得多(通过提供完全配置的操作系统!),如果部署linux客户端(因为它们是免费的),您可以获得更好的ROI


如果我是一个商人,我希望至少能够在linux或mac上部署,而不仅仅是windows。在战略上,我不想打赌,世界在5年的时间里与微软保持着联系。

P >切换前要考虑的一些问题:

[1] 你粘在窗户上还好吗?其他操作系统也有.NET克隆,但你的应用程序不会透明运行。您可能不需要的复杂性

[2] 您是否正在考虑仅为垃圾收集支持而切换?如果是这样,您可以使用一些C++垃圾回收库。如果您知道如何利用std::shared_ptr,您可能不会觉得需要垃圾收集器。一个你可能不需要的开销

[3] 您是否考虑使用C++/CLI是因为垃圾收集&您可以利用的所有有用的.NET类?如果是这样的话,为什么不直接切换到c#呢。C++/CLI是一种过渡技术,最好不要在这些方面投入资源。c#正变得相当成熟和实用


我个人只会坚持C++;p> 使用C++/CLI的主要优点是可以访问.NET库和框架本身(垃圾收集等)。但是,我可以看出,C++/CLI的主要原因是为了简化现有的C++代码移植到.NET框架中运行。鼓励新项目使用C#

如果你需要使用与.NET框架混合的现有C++代码,那么使用C++/CLI是有意义的,但是一般来说,你应该从C++开始。


如果.NET中有新项目需要广泛使用的东西(可能是更简单的GUI设计或其他东西),那么就使用C#。如果不是,那么坚持使用本地C++。我不认为这样做会损失任何东西。

我非常不喜欢C++/CLI,所以我建议像我描述的那样,转向清晰。有人建议使用C++/CLI作为标准C++和C语言之间的桥梁,但是由于C++的设计方式,使用这种方式是非常繁琐的(必须手动创建从C++中调用的普通C++代码的包装)。因此,我建议用C++来代替标准C++(尽管公认地,SWIG有一个基本的学习曲线)。

我相信你现在是 我确信C++/CLI是 既不是“C++的扩展集” (在许多方面,它实际上是一个 C++的子集),也与 C++比任何其他语言都有 分号和大括号。 此外,C++/CLI绝对是一种 面向Windows的程序设计语言; 这绝对不是一种语言,一个 Solaris 10服务器或诺基亚手机 手机将很高兴运行。什么是 它与C++有什么关系?
使用C++/CLR的一个主要缺点是,如果代码没有被完全隐藏,可能会丢失您的IP(知识产权)。总的来说,我同意其他成员在这里所作的发言。如果您想要独立于MS.net虚拟机的可移植代码,那么本机C/C++就是一种选择

看一看比亚恩·斯特罗斯图普在C++/CLI上的简短常见问题解答文章。虽然他不喜欢它并不奇怪,但他不这么做的理由很有启发性@钦梅:你为什么不把这个作为回答呢?我渴望投票!并且,考虑VS2010没有C++(CLI/CLI)的代码完成(智能感知),因此必须使用第三方工具或VS2008。