c#中循环对同一个控件的visible属性置同一个值,对系统有影响吗?

来源:百度知道 编辑:UC知道 时间:2024/06/30 04:34:49
在一个窗体中放一个定时器tmr1,两个图片框pic1和pic2.
private void tmr1_Tick(object sender, System.EventArgs e)
{
this.picShow();
}
private bool en = true;
private bool ava = true;
private void SmokeShow()
{
bool flag = true;
if(en != true)
{
this.pic1.Visible = false;
this.pic2.Visible = false;
}
else
{
for(byte num = 0;num < 4;num++)
{
if(ava != true)
{
flag = false;
break;
}
}
if(flag == true)
{
this.pic1.Visible = true;
this.pic2.Visible = false;
}
else if(flag == false)
{
this.pic1.Visible = false;
this.pic2.Visible = true;
}
}
}
程序大概是这样。第一次是pic1显示pic2不显示,假如第二次条件不改变还是要显示pic1显示pic2不显示,那么语句 if(flag == true)
{
this.pic1.Visible = true;
this.pic2.Visible = false;
}
又执行了一遍,因为有计时器定时触发,该语句不断重复执行

这点运算量能对效率造成多大影响啊。楼上那么做代码结构是更好了,但是每次赋值和判断之前都会多进行一次内存寻址操作,多一次从内存先取值再赋值的操作,性能也未必会有什么提高。

呵呵,用简化过的肯定是效率更高。用你的代码每次执行两次判断,进行两次赋值。
用下面简化的代码,每次执行一次判断,而且只在它们不相等的时候执行两次赋值,效率大概是你的两倍。
————————————
不会有影响,不过如果你不想重复执行的话,可以把下面这段
if(flag == true)
{
this.pic1.Visible = true;
this.pic2.Visible = false;
}
else if(flag == false)
{
this.pic1.Visible = false;
this.pic2.Visible = true;
}
改成这样:
if(flag != this.pic1.Visible )
{
this.pic1.Visible = flag ;
this.pic2.Visible = !flag;
}

当然不会!