为什么C#是开放标准但.NET不是?这有什么意义?为什么微软决定只打开他们.NET的某些部分?
答案 0 :(得分:8)
.NET运行时的各个部分确实由ECMA标准化,就像C# - CIL,CLI,CLS一样。
答案 1 :(得分:7)
.NET是运行时,C#是语言。 C#可以在其他运行时编译和运行,例如Mono。我实际上并不知道Mono之外的任何其他运行时,但由于C#的规范是开放的,你可以阅读它并创建自己的运行时。 ;)
答案 2 :(得分:4)
C#,如Java,C,C ++等,只是一种语言定义。就其本身而言,它什么都不做。它定义了用户定义程序或过程以及与外部库接口的方法。
另一方面,.NET框架不是一种语言。它是一个类库和开发框架。
答案 3 :(得分:2)
实际上,对于语言来说,运行时api有一个开放标准(ECMA 335而不是ECMA 334。
除此之外,the source code for Microsoft's implementation of .Net is available还有multiple separate implementations(其中最突出的是mono)。
还有一些关于专利保留的额外问题。但是,微软还在.Net平台上发布了legally binding and irrevocable community promise,涵盖了这两个规范(很多人都错过了具有法律约束力的部分)。
答案 4 :(得分:1)
我认为你的意思是框架。我猜他们想要保持对Windows上的库实现的控制。没有什么能阻止某人根据他们自己的来源实现与全部或部分框架的调用兼容版本,如Mono所做的那样。