Windows Mobile开发:C ++或C# - 哪一个更好?为什么?

时间:2010-03-01 17:15:21

标签: c# c++ windows-mobile

在进行Windows Mobile开发时,我应该使用哪种语言? C#或C ++还是其他什么?为什么一个比其他人好?

5 个答案:

答案 0 :(得分:5)

这取决于你的编码。

可以通过C#中的P / Invoke对操作系统进行本机调用,但通过本机C ++可以更容易地使用。您还需要使用C ++来使用一些未被Compact Framework包装的硬件。

大多数硬件(GPS,相机等)都可以通过CF获得。如果您正在使用Win Mobile 6.x设备,那么使用C#可能会更好。除硬件外,Pocket Office(POOM)对象模型也可用于C#,因此您可以与它集成。

值得注意的是,大多数对Windows Phone 7的引用都是指托管代码和Silverlight的可能性。使用Silverlight时,您必须使用C#进行编码。

除非您的应用程序性能很高或者内存非常吝啬,否则请使用C#或VB.NET。

斯科特

答案 1 :(得分:2)

主要取决于任务。

c ++有以下优点/缺点:

  • 直接访问资源,更快的程序
  • 可以访问非常深的操作系统部件,高级应用程序不需要
  • 难以开发并需要开发人员管理资源

C#:

  • 在虚拟机(CLR)下运行,这就是为什么慢一点
  • 更快更轻松的应用程序开发
  • Rich内置库

答案 2 :(得分:2)

对此没有正确的答案,因为没有一个通用的“更好”的定义。如果您已经了解C ++并且已经有很多C ++代码资产,那么C ++看起来确实很吸引人。如果你知道c#而不是C ++,那么C#肯定看起来很有吸引力。

C ++应用程序加载速度更快,但对于许多应用程序来说,这并不相关。 C#应用程序当然可以更快地编写,但它们也没有确定性。我再也不会在C ++中尝试用户界面了,我也不会考虑用C ++进行数据库访问。我不会在C#中编写驱动程序,或者是shell扩展。

一般来说,我提供的大部分解决方案都是两者的混合体。 C#有其优势。编写速度快,调试和单元测试更快,很难(尽管不是不可能)创建泄漏,对于某些操作(如数据访问或XML解析),它更容易。

C ++也有自己的优势,比如执行速度(尽管C#可以在许多方面变得同样快),确定性以及插入需要原生入口点的东西的能力。

那么我的答案呢?你需要知道两者,并且可能使用两者来编写你的解决方案。您最终使用的百分比取决于您的最终目标。

答案 3 :(得分:1)

取决于。

至少提出一个特定的用例。并可能使用SO搜索? :)

C++ or C# to program mobile barcode device?

编辑: 显然,其他人的抽签速度更快,并给出了更明确的答案。不过,我仍然建议阅读上述SO线程。

答案 4 :(得分:1)

根据我的经验,从c#开始更容易,如果紧凑框架提供的api足够你,那么你就可以了。

另一方面,如果你的项目有点复杂,或者如果你想做一些不在紧凑框架中的事情,你可能最终需要在c ++中创建一个帮助器.dll。即使在这种情况下,您也可以在c#中使用主程序,并在c ++中编写助手dll。

如果你直接使用c ++编程,你可能会因为你的原始性能比c#更好而受益,如果你正在进行游戏,那就很好。

但是你也会受到Windows移动操作系统的限制。像每个进程最多32MB,或者所有.dll共享相同的地址空间。

所以最终它取决于计划做什么和你的经验。