2

为什么 C# 是开放标准而 .NET 不是?这有什么意义?为什么微软决定只开放他们的 .NET 的一部分?

4

5 回答 5

9

.NET 运行时的各个部分确实由 ECMA 标准化,就像 C# - CIL、CLI、CLS 一样。

于 2010-04-26T18:54:41.670 回答
7

.NET 是运行时,C# 是语言。C# 可以在其他运行时编译和运行,例如 Mono。我实际上不知道除了 Mono 之外的任何其他运行时,但是由于 C# 的规范是开放的,您可以阅读它并制作自己的运行时。;)

于 2010-04-26T18:54:19.767 回答
4

C#与Java、C、C++等一样,只是一种语言定义。就其本身而言,它什么也不做。它定义了用户可以定义程序或过程以及与外部库接口的方式。

另一方面,.NET 框架不是一种语言。它是一个类库和开发框架。

于 2010-04-26T18:54:57.603 回答
2

实际上,有一个开放标准(运行时 api 的ECMA 335而不是语言的ECMA 334)。

除此之外,微软的 .Net 实现的源代码是可用的,并且有多个单独的实现(其中最突出的是mono)。

还有一些关于专利产权负担的额外担忧。然而,微软也在 .Net 平台上发布了一个具有法律约束力且不可撤销的社区承诺,涵盖了这两种规范(很多人错过了具有法律约束力的部分)。

于 2010-04-26T18:55:51.920 回答
1

我假设你的意思是框架。我猜他们想保持对 Windows 上库实现的控制。正如 Mono 所做的那样,没有什么能阻止某人基于他们自己的源代码实现框架的全部或部分的调用兼容版本。

于 2010-04-26T18:56:18.710 回答