怀疑.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问题........谢谢
答案 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总是有静态构造函数吗?
没有。静态构造函数实际上非常罕见。当然,静态类不能有普通的构造函数。
如果公共类具有正常的构造函数以及静态构造函数,那么目的是什么。
调用普通构造函数来初始化对象。在第一次使用类时调用静态构造函数。仅仅因为一个类都没有使它变得特别,你可以将该功能用于任何事情。