比方说,你写在C#,VB,.NET与任何一个应用程序当你击筑,它真的编译代码? 我是这么认为的,直到我开始使用在我的一些组件redgates反射,看到我的代码逐字。 我没有料想到会被展开和优化的另一个多如牛毛,而不是空无一环。
所以,当它编译实际发生? 我认为,当它建成后,代码成为IL(中间语言)和执行情况时,它加载的CLR? 难道只有从不在构建时CLR中得到优化?
比方说,你写在C#,VB,.NET与任何一个应用程序当你击筑,它真的编译代码? 我是这么认为的,直到我开始使用在我的一些组件redgates反射,看到我的代码逐字。 我没有料想到会被展开和优化的另一个多如牛毛,而不是空无一环。
所以,当它编译实际发生? 我认为,当它建成后,代码成为IL(中间语言)和执行情况时,它加载的CLR? 难道只有从不在构建时CLR中得到优化?
当你在VS编译
当您执行:
我在这里发表的回答也像其他的问题是不是真的这个...
它是在,那么,编译时编译成IL。 反射器的神奇之处就在于它“理解”的IL并将其转换回成C#(或VB.NET或什么的。看在反射器的选项菜单下,你可以在任何格式查看装配,包括IL)。
在反射,你居然看不到你的原代码。 您所看到的IL的翻译成C#。 大多数时候,这将是非常相似,你写的,但也有一些蛛丝马迹-例如,找到你实现的地方自动属性 :
string MyProperty {get;set;}
你会看到,实际上编译到,这是这样的:
public string MyProperty
{
[CompilerGenerated]
get
{
return this.<MyProperty>k__BackingField;
}
[CompilerGenerated]
set
{
this.<MyProperty>k__BackingField = value;
}
}