2009-08-21 42 views
2

我是windows mobile开发新手。我对windows mobile开发有一些疑惑,如下所示。在windows mobile上使用C#和C或C++的区别

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

2)我应该选择哪种语言进行开发,为什么? 3)如果我将C#作为移动开发,那么我可以在桌面上访问C#的所有API。

回答

1

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

2)这取决于您正在编写的应用程序。如果它不需要顶级性能,并且它不需要很多本地功能,那么应该管理代码。如果你需要很大的灵活性,那就选择本地。

3).Net Compact Framework有一部分桌面API。

1

1)太含糊回答

2)C#,因为那里是它的一个很好的支持框架(.NET精简版)。

3)不是。并不是所有的API都可以在Compact Edition of .NET中找到。

2
从语法

除此之外,主要的区别是,C#的管理和C++是不是(除非你使用托管C++?)

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

0

如果您正在开发仅适用于Windows移动设备的应用程序,请使用任何.Net Compact Framework支持的语言。

您也可以使用C++(非托管),但全部取决于您正在开发的移动应用程序的种类。

2

你的里程可能会有所不同,但几年前我们试图为Windows Mobile开发一个C#应用程序,性能令人难以置信的糟糕。我在说“我的对话框显示为”坏“需要10秒。我相信它已经变得更好了,但问题仍然存在:这些设备的资源限制比桌面PC更严格,并且使用.NET所带来的性能更可能会对您产生显着影响。 因此,如果你的应用程序对性能不敏感,那么请使用C#,但如果你有任何性能问题,根据我的经验,C#/ .NET不会在Windows Mobile上削减它。那么C++是下一个最明智的选择。

0

我在过去,以避免.NET框架开发WM除非绝对必要的时候被告知。

这显然是由于.net框架加载了相当多的dll,因此具有较大的内存占用量(显然这在某种程度上被减轻了,如果还有其他的话)。运行该共享程序集的网络应用程序) - 导致功耗使用率很低。

此外,发生的事故和内务(不受控制,在未定义的时间段内等 - 如果你周围移动大量内存可能会成为问题) - 在较低功耗的设备上,比如pda的这个不断变化的设备在后台周围可能会变得明显。

然而,在.net中编码却相当容易和快速。

如果:

  • 你认为“快赢”是不是认真的高效的代码或
  • 你不电池寿命护理或
  • 您的应用程序的心不是性能敏感或
  • 更重要你不知道如何用本地语言编码
  • 你不关心开放标准和合规性

然后去.net。

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

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

hth。

0
  1. C#常被推荐在简单的桌面或Web应用程序的发展,同时C++,它与硬件直接处理,用于需要高效率的应用程序。

  2. 我会说C#。鉴于您对Windows移动开发不熟悉,您可以更轻松地实现C#。另外,C#是由Windows开发的,所以它专门针对Windows应用程序。

  3. 不,您将只有桌面API的一部分库。