我只是在Telerik的JustDecompile中浏览我自己的一些代码并注意到以下代码
switch (data.CurrentSection)
{
case SurveyData.CurrentSectionEnum.Section1:
divSection1.Visible = true;
divSection2.Visible = false;
divSection3.Visible = false;
break;
case SurveyData.CurrentSectionEnum.Section2:
divSection1.Visible = false;
divSection2.Visible = true;
divSection3.Visible = false;
break;
case SurveyData.CurrentSectionEnum.Section3:
divSection1.Visible = false;
divSection2.Visible = false;
divSection3.Visible = true;
break;
}
显示为
switch (data.CurrentSection)
{
case CurrentSectionEnum.Section1:
{
this.divSection1.set_Visible(true);
this.divSection2.set_Visible(false);
this.divSection3.set_Visible(false);
break;
}
case CurrentSectionEnum.Section2:
{
this.divSection1.set_Visible(false);
this.divSection2.set_Visible(true);
this.divSection3.set_Visible(false);
break;
}
case CurrentSectionEnum.Section3:
{
this.divSection1.set_Visible(false);
this.divSection2.set_Visible(false);
this.divSection3.set_Visible(true);
break;
}
}
这是Telerik反编译器的人工制品还是我的预感是正确的,在框架的某个较低级别部分不存在“使用等号”设置运算符?如果是这样,任何人都可以提供更多信息吗?
答案 0 :(得分:6)
属性是C#(和VB.Net)语言的结构,而不是CLR。它们实现为get_XXX和set_XXX方法。
我希望反编译器识别它们!
答案 1 :(得分:0)
确保您拥有最新版本的JustDecompile。我尝试使用版本2012.1.214.2的代码,它正在生成您期望的C#。
正如其中一条评论中所提到的,getter和setter只是方法。以下是调用在IL中的显示方式:
ldloc.0
ldc.i4.1
callvirt instance void DivSection::set_Visible(bool)