今天我购买了C#3.0 Pocket Reference(O'Reilly Publishers)。
在第一页第一段的那本书中,给出了“ C#语言 平台中立,但它被编写为与Microsoft .Net平台良好协作“
如果我没有错,平台中立意味着使用该语言制作的软件应该在所有操作系统(例如Mac,Windows,Linux等)中运行。
我知道Java正在满足这个特性但是.Net还没有做到这一点(虽然MONO在Linux上取得了一些进展)。
那个词"PLATFORM NEUTRAL"
到目前为止有什么重要意义?#是关注?
提前致谢
答案 0 :(得分:19)
C#-language本身就像C和C ++一样是平台中立的 - 您可以在任何平台上为它实现编译器等。
.Net平台及其相关的库,它设计得很好,在设计中不是平台中立的 - 它们设计用于Windows,尽管Mono确实有所补偿这一点。
如果您在不使用任何.Net库的任何功能的情况下编写C#程序,它将保证与平台无关 - 您可以确定它将在任何具有C#工具的平台上运行...您刚赢了但是,有一个特别有用的程序;)
答案 1 :(得分:9)
但是通常与C#(dotNEt环境)相关的框架不是。它们运行在微软的操作系统上。
Mono通过提供必要的运行时环境在许多其他(主要是unix-oid)平台上启用C#,但它没有(全部)运行典型C#程序所需的框架。
答案 2 :(得分:6)
不要忘记你可以使用C#:
不完全错误的覆盖范围。该语言对运行时/操作系统的要求非常少。
答案 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)他们可能对开源生态系统造成的损害