-4

怀疑.net程序执行流程

几年来,我一直从事开发工作,但我对 C# win 或 Web 应用程序的运行方式缺乏了解。当我们从 IDE 运行应用程序时,编译器如何进入场景以编译我们的程序,然后程序如何启动...... CLR 如何进入场景以及 JIT 如何进入场景。谁控制程序的入口点。谁从外部调用程序入口点,即所谓的静态 void Main()。CLR 如何参与执行程序以及谁参与 CLR。JIT 如何参与以及谁参与了 JIT。为什么入口点是 static void main() ?

很多书帮助我们用 C# 编写代码,但从不谈论程序执行流程…….net 程序是如何运行的。当我们单击任何 .net exe 时,exe 是如何运行的。所以我有一些疑问....如果可能的话,请详细讨论上述问题或将我指向正确的文章。

怀疑 OOPS

1)我看到一个类是私有的,但构造函数是公共的......为什么......这是什么意思。是否有任何特殊目的是这样设计课程的原因。

2)我看到了公共类,但它有三个构造函数,一个是私有的,一个是静态的,最后一个是公共的……以这种方式设计一个类有什么特殊目的吗?

3)静态类总是有静态构造函数?

4)如果公共类具有普通构造函数和静态构造函数,那么目的是什么。

如果可能的话,请详细讨论上述 OOPS 问题........谢谢

4

1 回答 1

2

当我们从 IDE 运行应用程序时,编译器如何进入场景来编译我们的程序

IDE 启动编译器并将其传递给您的程序。编译器是另一个程序。它不需要特殊调用。您可以在没有 IDE 的情况下自己完成,只需csc.exe直接调用即可。

然后程序如何启动......CLR如何进入现场以及JIT如何进入现场。谁控制程序的入口点。谁从外部调用程序入口点,即所谓的静态 void Main()。CLR 如何参与执行程序以及谁参与 CLR。JIT 如何参与以及谁参与了 JIT。

JIT 是动态的 IL-to-native 编译器。这就是将 .NET 语言编译成的 IL 的翻译,以便程序可以实际运行。

就您使用 JIT 的方式而言,CLR 几乎是另一个世界。我不打算在这里详细介绍,但您可以在 MSDN 上找到更多信息。

为什么入口点是 static void main() ?

习俗。为什么语言叫C#?

我看到一个类是私有的,但构造函数是公共的......为什么......这是什么意思。是否有任何特殊目的是这样设计课程的原因。

这样就可以从外部类实例化私有类。例如:

public class A {
    private something = new B();

    private class B {
        public B() {
            // ...
        }
    }
}

如果构造函数不是publicprivate则外部类无法实例化该类。

我看到了公共类,但它有三个构造函数,一个是私有的,一个是静态的,最后一个是公共的……以这种方式设计一个类有什么特殊目的吗?

当然。他们都做不同的事情。这不是那么不寻常。

静态类总是有静态构造函数?

不,静态构造函数实际上非常罕见。当然,静态类不能有普通的构造函数。

如果公共类具有普通构造函数和静态构造函数,那么目的是什么。

调用普通构造函数来初始化对象。第一次使用该类时调用静态构造函数。仅仅因为一个类同时具有这两者并不能使它特别,您可以将该功能用于几乎任何事情。

于 2012-04-25T13:35:51.853 回答