我正在尝试尽可能地优化我的代码,对我而言,这意味着最大限度地减少执行的计算量.我有:
for (int i = 0; i < this.Entities.Count; i++)
{
if (this.Entities[i].Type == 2)
{
if (this.Entities[i].X > this.Bounds.Width + this.SideOffset || this.Entities[i].X < -this.SideOffset)
{
this.Entities.Remove(this.Entities[i]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
并且为了优化它,我在类型检查中嵌套了越界检查,因此它仅在运行检查时运行.我的问题是,如何在C#中处理if语句?是否检查了每个条件,或者我是否可以将两个if语句放在一个中并使其有效地运行相同(如果this.Entities [i] .Type不等于2则不会运行if语句的其余部分)
有两种类型的AND,并OR在C#:
&/ |将始终检查条件的两个方面.
&运算符评估两个运算符,而不管第一个运算符的值
&&/ ||如果只能使用左侧评估最终结果,则不会检查右侧.
条件AND运算符(&&)执行其bool操作数的逻辑AND,但仅在必要时才计算其第二个操作数.
条件OR运算符(||)执行其bool操作数的逻辑或.如果第一个操作数的计算结果为true,则不计算第二个操作数.
使用||或时,C#执行短路逻辑&&
你的逻辑线:
if (this.Entities[i].X > this.Bounds.Width + this.SideOffset || this.Entities[i].X < -this.SideOffset)
Run Code Online (Sandbox Code Playgroud)
this.Entities[i].X < -this.SideOffset 如果先前条件失败,则不会执行.
你可以做出你的逻辑:
if ( (this.Entities[i].Type == 2) && (this.Entities[i].X > this.Bounds.Width + this.SideOffset || this.Entities[i].X < -this.SideOffset)){
...
}
Run Code Online (Sandbox Code Playgroud)
然而,关于代码的可读性有一些说法,几乎没有任何性能.与编码中的任何内容一样,这完全取决于上下文.
| 归档时间: |
|
| 查看次数: |
117 次 |
| 最近记录: |