有关.Net程序执行流程和基本oops相关的非常基本的问题需要帮助

时间:2012-04-25 13:30:45

标签: c# .net oop

怀疑.net程序执行流程

几年来我一直在开发,但我对C#win或web应用程序的运行方式缺乏了解。当我们从IDE运行应用程序时,编译器如何进入场景来编译我们的程序,之后程序如何启动...... CLR如何进入场景以及JIT如何进入场景。谁控制了程序的切入点。谁从外部调用程序入口点所谓的静态void()。 CLR如何承担执行该计划的责任&谁涉及CLR。 JIT如何涉及和涉及JIT。为什么入口点是静态void main()?

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

对OOPS的怀疑

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

2)我看到了公共课,但它有三个构造函数,一个是私有的,一个是静态的,最后一个是公开的......以这种方式设计类是否有任何特殊目的。

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

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

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

1 个答案:

答案 0 :(得分:2)

  

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

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

  

然后程序如何启动...... CLR如何进入场景以及JIT如何进入场景。谁控制了程序的切入点。谁从外部调用程序入口点所谓的静态void()。 CLR如何承担执行该计划的责任&谁涉及CLR。 JIT如何涉及和涉及JIT。

JIT是动态的IL到本机编译器。这就是将.NET语言编译成IL的内容,以便程序可以实际运行。

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

  

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

公约。为什么语言称为C#?

  

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

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

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

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

如果构造函数不是public,则外部类无法实例化private类。

  

我看过公共课,但它有三个构造函数,一个是私有的,一个是静态的,最后一个是公开的......以这种方式设计类是否有任何特殊目的。

不确定。他们都做不同的事情。这并不是那么不寻常。

  

static class总是有静态构造函数吗?

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

  

如果公共类具有正常的构造函数以及静态构造函数,那么目的是什么。

调用普通构造函数来初始化对象。在第一次使用类时调用静态构造函数。仅仅因为一个类都没有使它变得特别,你可以将该功能用于任何事情。