private void AllowOtherSelectors(bool value)
{
foreach (var c in this.Parent.Controls)
{
if (c == this)
continue;
if (!(c is RoundGroupedSelector))
continue;
var rgs = c as RoundGroupedSelector;
rgs.AllowMultiple = value;
}
}
虽然这段代码有效但我觉得它可以从使用LINQ中受益。该程序将在具有Atom处理器的平板电脑上使用,因此我只是在寻找所使用的资源/周期最少。
答案 0 :(得分:11)
好吧,我仍然使用foreach
循环,但你可以使用LINQ作为查询部分:
foreach (var c in Parent.Controls
.OfType<RoundGroupedSelector>()
.Where(x => x != this))
{
c.AllowMultiple = value;
}
答案 1 :(得分:1)
我肯定会选择Jon的答案,但只是为了解决你对“使用的最少周期”这一点的看法,你可能会让它更快一点:
private void AllowOtherSelectors(bool value)
{
var saved = this.AllowMultiple;
foreach (var c in this.Parent.Controls)
{
var rgs = c as RoundGroupedSelector;
if (rgs != null)
rgs.AllowMultiple = value;
}
this.AllowMultiple = saved;
}
我通过在循环之前复制if (c == this)
并在之后恢复它来避免每次迭代this.AllowMultiple
次测试。我还删除了is
的多余使用。
如果有很多控件并且this.AllowMultiple
分配非常快且没有副作用,这只会加快速度。
我必须强调,这种微优化通常是毫无意义的,如果你做这种事情,你必须检测它,看它是否真的更快。
我在这里发帖只是为了感兴趣。我绝对不是在暗示你应该这样做! :)