C#平台是否中立?

时间:2009-12-13 06:48:16

标签: c# language-design

今天我购买了C#3.0 Pocket Reference(O'Reilly Publishers)。

在第一页第一段的那本书中,给出了“ C#语言 平台中立,但它被编写为与Microsoft .Net平台良好协作

如果我没有错,平台中立意味着使用该语言制作的软件应该在所有操作系统(例如Mac,Windows,Linux等)中运行。

我知道Java正在满足这个特性但是.Net还没有做到这一点(虽然MONO在Linux上取得了一些进展)。

那个词"PLATFORM NEUTRAL"到目前为止有什么重要意义?#是关注?

提前致谢

8 个答案:

答案 0 :(得分:19)

C#-language本身就像C和C ++一样是平台中立的 - 您可以在任何平台上为它实现编译器等。

.Net平台及其相关的库,它设计得很好,在设计中不是平台中立的 - 它们设计用于Windows,尽管Mono确实有所补偿这一点。

如果您在不使用任何.Net库的任何功能的情况下编写C#程序,它将保证与平台无关 - 您可以确定它将在任何具有C#工具的平台上运行...您刚赢了但是,有一个特别有用的程序;)

答案 1 :(得分:9)

语言C#是平台中立的。

但是通常与C#(dotNEt环境)相关的框架不是。它们运行在微软的操作系统上。

Mono通过提供必要的运行时环境在许多其他(主要是unix-oid)平台上启用C#,但它没有(全部)运行典型C#程序所需的框架。

答案 2 :(得分:6)

不要忘记你可以使用C#:

  • MS .NET(Windows)
  • .NET Compact Framework(PocketPC,XBox 360)
  • Silverlight(Windows,Mac)
  • Moonlight(Mono / Linux)
  • MonoTouch(iPhone)
  • MonoDevelop(各种包括android)
  • Micro Framework(一些手表等)

不完全错误的覆盖范围。该语言对运行时/操作系统的要求非常少。

答案 3 :(得分:3)

如果将Mono视为Linux上可靠的运行时,C#在OS意义上是平台中立的(即操作系统中立)。

但是,C#和.Net可以在32位和64位计算机上按原样运行, 无需重新编译 。我想这就是作者的意思。

答案 4 :(得分:2)

在这种情况下,platform neutral被定义为“能够在任何具有compatible virtual machine”的计算机上运行。根据您使用的语言功能和编译器,可以认为C#能够在运行最新版本的Windows,Mac OS和Linux的计算机上运行。

答案 5 :(得分:2)

C#语言可以在任何具有兼容编译器和虚拟机的平台上实现。该语言本身具有ECMA实现标准,因此本身不包含任何平台(即Microsoft)特定的语言元素。

答案 6 :(得分:1)

在回答这个问题之前,必须考虑到如今没有图书馆,任何语言都是无用的。这就是说,构成其中一部分的许多名称空间只是windows。许多只是围绕微软技术的包装,如com,win forms等。

所有考虑的事情只是看一下单声道提供的调整,以提供dot net的替代品。 Miguel多次提到过,他们希望Silverlight能胜出而不是其他ui工具包,因为它确实是平台独立的而不是wpf和winforms等。

如果您想要真正的多平台语言和环境,请查看Java。

答案 7 :(得分:0)

在我看来,微软声称C#是平台中立的(由你引用的文字重复)是不诚实的。

技术上是正确的,但实际上,C#应用程序对非MS操作系统的有限可移植性已经发生尽管 Microsoft而不是因为它们。很明显,微软无意在任何非MS操作系统上支持C#/ .Net。实际上,许多人认为微软(通过与Novell的专利许可协议)使用C#/ Mono作为“楔形”来破坏GNU / Linux生态系统。

IMO,任何想要使用Mono的人都需要考虑:1)如果MS决定对.NET专利发挥强硬作用,他们的项目会面临风险; 2)他们可能对开源生态系统造成的损害