为什么 C# 与 .Net 紧密耦合?

Why is C# tightly coupled to .Net?

在 C++ 中,C++ 代码既可以由编译器编译,也可以在 C++ 框架(如 Platinum)中使用。我的意思是,您可以选择 运行 C++,无需框架。 python 和其他语言也是如此。但是来到 C# 世界,我认为(也许我错了)你别无选择 运行 C# 独立于编译器;它与 dotNet 框架或单声道耦合。是否有其他语言的行为类似于 C# 并且需要其框架 运行?或者只有 C# 会这样?

I want to know that if I can run C# without .Net. I want to separate the framework concept from the language.

如果您查看 C# 规范,ECMA 334,您会看到它说:

Although Microsoft’s implementation of C# relies on CLI for library and run-time support, other implementations of C# need not, provided they support an alternate way of getting at the minimum CLI features required by this C# standard (see Annex C).

CLI(公共语言基础设施)是基于 .NET Framework 的一个子集,正如标准所说,因此 C# 这种语言确实不依赖于 .NET。它只依赖于“附件C”中列出的东西,你可以自己看看。

但是,Microsoft 的 C# 编译器,C# 语言的特定实现 确实 依赖于 .NET。

另请注意,只有附件 C 中列出的内容的 C# 不会非常强大。我什至在那里找不到 System.Console class。我不认为你将能够只用附件 C 中的东西编写任何实用的程序,所以在实用层面上,是的,C# 确实非常依赖 .NET。

我认为这个问题有两个答案。

框架

我认为这只是口水战

Python 有一个解释器,并带有“包含电池”,这意味着一个大型标准库。默认包含的解释器和库是 python 的 运行time environment.

.NET 是 C# 的运行时间环境。例如,它包括 运行 C# 程序所需的虚拟机。

另请记住,框架只是一个术语,它在许多层面上都有使用。例如,ASP.NET也是一个框架,但它的含义不同于.NET Framework,它是另一个层次的框架。

Mono 不是 .NET Framework

重要的是要指出。 mono 不是 .NET Framework,它是 C# 耦合到 .NET Framework 的真实证明。

为什么 C# 不完全独立于 .NET?

C# 是作为 .NET 的一部分创建的。