为什么Windows Phone 7只支持C#语言,但不完全符合C#规范?我可以理解没有"dynamic"支持,但为什么不支持contra-covariance?为什么我们在服务器和桌面项目中常用的第三方库不能与Phone 7兼容?如果最终还是无法使用,那中间的IL代码有什么意义呢?
为什么Windows Phone 7只支持C#语言,但不完全符合C#规范?我可以理解没有"dynamic"支持,但为什么不支持contra-covariance?为什么我们在服务器和桌面项目中常用的第三方库不能与Phone 7兼容?如果最终还是无法使用,那中间的IL代码有什么意义呢?
好吧,它并没有“完全支持”C# 4(最新版本),但你知道有哪些不支持C# 3语言特性吗?没有对变异修饰符的支持。虽然变异/共变形式是泛型的整体ECMA规范的一部分,并且在完整的.NET CLR中实现,但它不被基类库或C#和VB使用。
编辑:我的声明使用CF CLR的引文:
Windows Phone 7 Series开发人员常见问题解答:
我可以使用哪些技术和工具来为Windows Phone 7系列编程?
您目前可以使用基于Silverlight的托管语言C#和基于Compact Framework的XNA。我可以使用Windows Forms吗?
不可以,Windows Forms不受包含在Windows Phone 7系列中的Compact Framework版本支持。
(接下来)
我可以在Silverlight中使用XNA库调用吗?
Silverlight和XNA在Compact Framework中共享一个公共代码库。如果调用不是GUI基础的,在大多数情况下,它可以在Silverlight和XNA之间共享。
一个CF团队成员的博客文章:
对于从Windows桌面转到Windows Phone 7(WP7)的开发人员,让我首先澄清一点:在WP7上运行的运行时(CLR)与在桌面上运行的不同。WP7运行时被称为.NET Compact Framework(NETCF),其工作方式与“桌面CLR”不同。
由于Windows Phone 7是基于Silverlight构建的,因此它不完全支持您所熟悉的所有.NET Framework功能。
Silverlight的设计是不支持完整功能集的,因为它旨在成为轻量级运行时(而不是要求每个用户下载整个.NET Framework来运行Silverlight应用程序)。
如果您正在使用SL,链接到Web服务,那么您可以(应该)保持移动应用程序的轻便性,并将服务器上的大量数据传输到客户端...
听起来很简单,但许多人试图将所有责任委托给“应用程序”-这是不好的做法。如果您的“网站”符合REST规范,则应将您的应用程序纯粹地调用json/xml以与您的“昂贵”的基于服务器的逻辑相匹配。
无论如何,这就是我们的做法 :)