过去几年我一直是一名本地C ++程序员。现在我们从头开始一个新项目。那么您对以C ++ \ CLI转移而牺牲平台无关代码的想法是什么?通过转换到C ++ \ CLI可以获得任何特殊优势吗?
答案 0 :(得分:31)
根据我对C ++,C#和.NET的经验,我会推荐以下内容:
如果你不需要它,我认为没有意义去C ++ / CLI。
答案 1 :(得分:6)
切换前需要考虑的一些问题:
[1]你坚持使用Windows吗?有其他操作系统的.NET克隆,但你的应用程序不会只是透明地运行。您可能不需要的复杂性。
[2]您是否考虑仅仅为垃圾收集支持进行切换?如果是这样,您可以使用一些C ++垃圾收集器库。如果你弄清楚如何利用std :: shared_ptr,你可能不会觉得需要垃圾收集器。您可能不需要的开销。
[3]你是否正在考虑C ++ / CLI,因为垃圾收集&您可以利用的所有有用的.NET类?如果是这样,为什么不切换到c#。 C ++ / CLI是一种过渡技术,最好不要在这些事情上投入资源。 c#变得非常成熟和可用。
就个人而言,我只会坚持使用C ++;)。
答案 2 :(得分:3)
你有什么好处吗?您可能会失去切换到另一个操作系统的能力。
答案 3 :(得分:2)
除非您正在使用.NET应用程序进行集成,否则不要打扰。当然不要使用STL / CLR,因为它的性能非常糟糕。
很容易将该开关转换为使用.NET类库,但还有其他选择。如果这样做,您将无法轻松移植代码。
似乎OSS的兴起正在增加,所以现在可能是调查使用跨平台库和工具的时候了。您可以比Windows一样轻松部署Linux应用程序(通过发布完全配置的操作系统!),如果部署Linux客户端(因为它们是免费的),您可以获得更好的投资回报率。
如果我是一名商人,我希望至少能够在Linux或Mac上部署,而不仅仅是Windows。从战略上讲,我不想打赌这个世界在5年后一直与微软保持联系。
答案 4 :(得分:2)
迁移到C ++ / CLI的主要优点是可以访问.NET库和框架本身(垃圾回收等)。但是,据我所知,C ++ / CLI存在的主要原因是为了简化现有C ++代码的移植以便在.NET框架中运行。鼓励新项目使用C#。
如果您需要使用与.NET框架混合使用的现有C ++代码,那么使用C ++ / CLI是有意义的,但通常您应该从C#开始。
如果.NET中存在新项目需要广泛使用的东西(可能是更简单的GUI设计或其他东西),那么使用C#。如果没有,那么坚持使用原生C ++。我不认为你这样做会失去任何东西。
答案 5 :(得分:1)
我不喜欢C ++ / CLI,所以我建议转向清晰,正如我所描述的here。有人建议使用C ++ / CLI作为标准C ++和C#之间的桥梁,但是由于C ++ / CLI的设计方式,使用这种方式非常繁琐(您必须手动创建可以从中调用的普通C ++代码的包装器) C#)。因此,我建议使用SWIG来代替标准C ++与C#的接口(尽管如此,SWIG有一个实质性的学习曲线)。
答案 6 :(得分:1)
看看这两篇文章:
A Critical Overview of C++/CLI, Part I
A Critical Overview of C++/CLI, Part II
我相信你到现在为止 我确信C ++ / CLI是 既不是“C ++的一组扩展” (在很多方面,它实际上是一个 C ++的子集),也与它无关 C ++比任何其他语言都多 分号和花括号。 此外,C ++ / CLI绝对是一个 面向Windows的编程语言; 它绝对不是一种语言 Solaris 10服务器或诺基亚移动 手机很乐意跑。是什么 它与C ++有什么关系?
答案 7 :(得分:0)
使用C ++ / CLR的一个主要缺点是,如果代码没有被严重遮挡,则可能会丢失您的IP(知识产权)。总的来说,我同意其他成员在这里所作的发言。如果您想要与MS .net vm无关的可移植代码,那么本机C / C ++就是您的选择。