【发布时间】:2011-01-22 09:25:36
【问题描述】:
在进行 Windows Mobile 开发时,我应该使用哪种语言? C# 或 C++ 还是其他?为什么一个人比别人好?
【问题讨论】:
标签: c# c++ windows-mobile
在进行 Windows Mobile 开发时,我应该使用哪种语言? C# 或 C++ 还是其他?为什么一个人比别人好?
【问题讨论】:
标签: c# c++ windows-mobile
这取决于你在编码什么。
可以通过 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。
斯科特
【讨论】:
主要看任务。
c++ 有以下优点/缺点:
C#:
【讨论】:
视情况而定。
至少呈现一个特定的用例。并可能使用 SO 搜索? :)
C++ or C# to program mobile barcode device?
编辑: 显然,其他人的平局速度更快,并且给出了更清晰的答案。尽管如此,我仍然建议阅读上面的 SO 线程。
【讨论】:
对此没有正确答案,因为没有万能的“更好”定义。如果您了解 C++ 并且已经拥有大量 C++ 代码资产,那么 C++ 肯定看起来很有吸引力。如果你知道 C# 而不是 C++,那么 C# 看起来确实很吸引人。
C++ 应用程序加载速度更快,但对于许多应用程序来说,这并不重要。 C# 应用程序当然可以更快地编写,但它们也没有确定性。我什至再也不会尝试使用 C++ 编写 UI,也不会考虑使用 C++ 进行数据库访问。不过,我不会用 C# 编写驱动程序,也不会编写 shell 扩展。
一般来说,我提供的大多数解决方案都是两者的混合。 C# 有它的优势。它的编写速度很快,更易于调试和单元测试,很难(尽管并非不可能)造成泄漏,并且对于某些操作(如数据访问或 XML 解析)来说,它更容易。
C++ 也有它的优势,比如执行速度(尽管 C# 可以在很多事情上运行得一样快)、确定性和插入需要本地入口点的东西的能力。
所以我的回答?您需要同时了解两者,并且可能会同时使用两者来编写您的解决方案。您最终使用的百分比取决于您的最终目标。
【讨论】:
根据我的经验,c#比较容易上手,如果compact框架提供的api对你来说足够了,那你就ok了。
另一方面,如果您的项目有些复杂,或者如果您想做一些不在紧凑框架中的事情,您可能最终需要在 c++ 中创建一个帮助程序 .dll。即使在这种情况下,您也可以在 c# 中编写主程序,并在 c++ 中编写 helpers dll。
如果您直接使用 c++ 进行编程,您可能会受益于原始性能比 c# 更好的事实,如果您正在玩游戏,这很好。
但是您也会受到 windows mobile 操作系统的限制。比如每个进程最多 32MB,或者所有 .dll 共享相同的地址空间。
所以最终这真的取决于你打算做什么以及你拥有的经验。
【讨论】: