Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#平台是中性的吗?_C#_Language Design - Fatal编程技术网

C#平台是中性的吗?

C#平台是中性的吗?,c#,language-design,C#,Language Design,今天我购买了C#3.0 Pocket Reference(O'Reilly出版社) 在那本书的第一页的第一段中,有人指出“C#语言是 平台无关,但它是为了与Microsoft.Net平台配合使用而编写的“ 如果我没有错的话,平台无关意味着用这种语言制作的软件应该在所有操作系统中运行(例如Mac、Windows、Linux等) 我知道Java已经满足了这个特性,但是.Net还不能做到这一点(尽管MONO在Linux上取得了一些进展) 那么到目前为止,“平台中立”这个词的意义是什么 提前感谢C#是操

今天我购买了C#3.0 Pocket Reference(O'Reilly出版社)

在那本书的第一页的第一段中,有人指出“C#语言是 平台无关,但它是为了与Microsoft.Net平台配合使用而编写的

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

我知道Java已经满足了这个特性,但是.Net还不能做到这一点(尽管MONO在Linux上取得了一些进展)

那么到目前为止,“平台中立”这个词的意义是什么

提前感谢

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


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

在这种情况下,
平台中立型
被定义为“能够在任何具有平台的机器上运行”。根据您使用的语言功能和编译器,可以认为C#能够在运行最新版本Windows、Mac OS和Linux的机器上运行。

C#是一种平台无关的语言

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

Mono通过提供必要的运行时环境,在许多其他(主要是unix oid)平台上支持C#,但它没有(全部)运行典型C#程序所需的框架 然而.Net平台及其相关的库在设计上并不是平台中立的,它们是为在windows上工作而设计的,尽管Mono在一定程度上弥补了这一点


如果您编写一个C#程序而不使用任何.Net库的任何功能,它保证是平台独立的-您可以确保它将在任何具有C#工具的平台上运行。。。不过,您不会有一个特别有用的程序;)

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

在我看来,Microsoft声称C是平台中立的(您引用的文本重复了这一点)是不真实的

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

在我看来,任何想使用Mono的人都需要考虑:1)如果微软决定对.NET专利采取强硬态度,会给他们的项目带来风险,2)他们可能因此对开源生态系统造成的损害。

别忘了你可以在以下方面使用C#:

  • MS.NET(Windows)
  • .NET Compact Framework(PocketPC、XBox 360)
  • Silverlight(Windows、Mac)
  • 月光(Mono/Linux)
  • MonoTouch(iPhone)
  • MonoDevelop(包括android在内的各种应用程序)
  • 微框架(一些手表等)

报道还不错。在回答问题之前,语言对运行时间和操作系统的要求很少,必须考虑到,如果没有它的库,现在任何语言都是无用的。也就是说,许多构成windows一部分的名称空间仅限于windows。很多只是微软技术的包装,比如com、winforms等等

所有考虑过的事情,只需看看mono为提供网络替代品所做的调整。Miguel多次提到,他们希望Silverlight能够胜出,而不是其他ui工具包,因为它真正独立于平台,而不是wpf和winforms等


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

从2009年7月6日起,微软宣布将其ECMA 334和ECMA 335规范置于其社区承诺之下,承诺不会对任何实现、分发或使用.NET替代实现的人主张其专利[21]然而,自由软件基金会后来重申了它的警告,(22)声称微软社区对C和CI ECMA规范(23)的承诺不会阻止微软破坏C语言的开源实现,因为.NET或Mono中包含的许多特定Windows库不在本承诺范围内。[21]-[22]我听说FSF在这方面的声音,但如果我们只使用非Windows特定库,我们仍然可以自由使用Mono。您可以“自由”使用Mono。但这并不意味着它是一个明智的。。。和社区精神。。。要做的事情。好吧,由于Mono的发展非常快,我认为我们可以用它来创建越来越多的“有用”程序如果你对Linux和自由软件的好处感兴趣,请不要在编写新程序时使用C。谢谢。请编辑,您的列表中真正提到了多少种不同的平台。所有没有库的语言实际上都是无用的。不需要虚拟机。可以构建一个编译为本机代码的编译器。