C#如何与.NET Framework分离?

Rab*_*820 8 .net c#

对于.NET框架,我不是新手,我一直在编写利用它多年的C#软件.然而,前几天我想到了一个想法...... C#如何与.NET框架分离,并且关键字lockobject?像object derp = new object();解析一样的语句System.Object derp = new System.Object();,但System.Object被定义为.NET的一部分,不是吗?即使它是在mscorlib中定义的,这也意味着语言功能依赖于库.对于lock解析调用Monitor.Enter()和的语句也是如此Montior.Exit().显然,如果不使用.NET功能编写任何非玩具程序将是愚蠢/不可能的,但是语言如何依赖于主要使用该语言编写的库?

Han*_*ant 7

实现语言的最低要求是让编译器将语言转换为可执行代码,并使用运行时系统来执行它.它们都不是用C#编写的,而是使用C++.使用另一种语言来实现这一点是传统且必要的自举步骤.C语言是引导语言的一种非常常见的选择,它很小并且非常容易移植,Mono采用的方法.C本身有一个引导语言,它是B.它是从BCPL引导的.这是从CPL引导的.这是从Atlas2引导的.在此之前变得模糊,想象有人在非常原始的计算机的前面板上使用切换开关.

一旦到位,您就可以开始迭代和改进.就像添加对lock关键字的支持一样,您不需要使用语言功能来获得编译器和运行时系统.它依赖于Monitor类,今天仍然很薄,其绝大多数代码都是用C++编写的.

通常接下来将编译器重写为目标语言,C#花了很长时间,但现在使用Roslyn完成.可能会考虑重写运行时系统,尽管这不是很常见.作为微软内部孵化项目的秘密Midori项目.不仅仅是运行时而是整个操作系统.从Singularity项目开始.