在 windows mobile 上使用 C# 和 C 或 C++ 之间的区别

Posted

技术标签:

【中文标题】在 windows mobile 上使用 C# 和 C 或 C++ 之间的区别【英文标题】:Difference between use C# and C or C++ on windows mobile 【发布时间】:2009-08-21 05:58:51 【问题描述】:

我是 Windows 移动开发的新手。我对windows mobile开发的一些疑惑如下。

1) 就选择开发语言而言,C# 和 C (C++) 之间的主要区别是什么。 (不是语法上的)。

2) 我应该选择哪种语言进行开发,为什么?

3) 如果我将 C# 作为移动开发,那么我可以访问 C# 上的所有 API 桌面。

【问题讨论】:

【参考方案1】:

除了语法,主要区别在于 C# 是托管的,而 C++ 不是(除非您使用托管 c++?)

它们都是面向对象的语言(不是 C)。 C++ 允许您进行自己的内存管理(这可能是好是坏),而 C# 是托管代码,因此垃圾收集主要由运行时为您完成。如果您使用 C#,您将能够访问针对 CLR 的所有其他托管程序集。

【讨论】:

【参考方案2】:

您的情况可能会有所不同,但几年前我们曾尝试为 Windows Mobile 开发 C# 应用程序,但性能差得令人难以置信。我说的是“我的对话框出现需要 10 秒钟”不好。我确信它已经变得更好了,但根本问题仍然存在:这些设备的资源限制比台式 PC 更严格,而 .NET 对性能的影响更有可能对您产生显着影响。 因此,如果您的应用程序对性能不敏感,请使用 C#,但如果您有任何性能问题,根据我的经验,C#/.NET 不会在 Windows Mobile 上削减它。 C++ 是下一个最明智的选择。

【讨论】:

【参考方案3】:

Windows Mobile Development: Choice of .Net compact vs. Native (c++) code

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

【讨论】:

【参考方案4】:

1) 用本机代码编写的应用程序将运行得更快。此外,本机应用程序中的内存占用更小。

2) 这取决于您正在编写的应用程序。如果它不要求最高性能并且不需要很多本机功能,那么应该管理代码。如果您需要很大的灵活性,请选择原生。

3) 没有。.Net Compact Framework 具有桌面 API 的子集。

【讨论】:

【参考方案5】:

1) 太模糊,无法回答

2) C#,因为它有一个得到良好支持的框架(.NET 精简版)。

3) 不可以。并非所有 API 都在 .NET 精简版中可用。

【讨论】:

【参考方案6】:

如果您只为 Windows 手机开发应用程序,请选择任何 .Net Compact Framework 支持的语言。

您也可以使用 C++(非托管),但这一切都取决于您正在开发的移动应用程序的类型。

【讨论】:

【参考方案7】:

过去有人建议我在为 WM 开发时避免使用 .net 框架,除非绝对必要。

这显然是由于 .net 框架加载了相当多的 dll 并因此占用了大量内存(如果有其他 .net 应用程序运行共享程序集,这显然会在一定程度上得到缓解) -导致用电量相当低。

还有发生的抖动和内务处理(在您无法控制的情况下,在未定义的时间段等 - 如果您移动大量内存可能会成为一个问题) - 在像 pda 这样的低功率设备上,这种不断的混乱在后台可能会变得引人注目。

然而,在 .net 中编写代码要容易和快捷。

如果:

您认为“速赢”比认真高效的代码或 你不关心电池寿命或 您的应用对性能不敏感或 您不知道如何使用母语编写代码 您不关心开放标准和合规性

然后去.net。

.net 紧凑框架是 .net 桌面版本的子集 - 因此框架的某些功能和方面不可用。

如果您刚刚开始,我推荐 .net - 如果您正在开发商业解决方案等,我推荐使用 c/c++。

第一次。

【讨论】:

【参考方案8】:

    C# 通常推荐用于开发简单的桌面或 Web 应用程序,而直接处理硬件的 C++ 用于需要更高效率的应用程序。

    我会说 C#。鉴于您是 Windows 移动开发的新手,C# 对您来说会更容易实现。此外,C# 是由 Windows 开发的,因此它专门针对 Windows 应用程序。

    没有。您将只有桌面 API 的一部分库。

【讨论】:

以上是关于在 windows mobile 上使用 C# 和 C 或 C++ 之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Windows Mobile 上的 C# 文件中获取修改日期?

数据网格样式windows mobile c#

仅在 Windows Mobile/CE 上可用的引用程序集

Windows Mobile 6.5 C# 开发:从哪里开始?

在 C# 中创建具有多个屏幕的 Windows Mobile 应用程序的最佳方法是啥

Windows Mobile 模拟器上的身份验证 Oauth 使用 HTTPS 失败