使用 ForEach 迭代 Checkbox 属性而不使用 LINQ

下面的代码循环访问表单上的所有复选框,反转每个复选框的 .Checked 状态。


是否可以避免使用 LINQ 来执行此操作?


public void TickChecker()

    {

        foreach (CheckBox con in Controls.OfType<CheckBox>())

        {

            con.Checked ^= true;

        }

    }


缥缈止盈
浏览 83回答 2
2回答

潇潇雨雨

C# 长期以来支持两个运算符来检查对象的类型:is 和 as。C# 7 添加了一种使用 is 运算符的新方法,该方法将 is 与基本模式相结合,为 as 提供替代方案。所以你可以在你的foreach:foreach (Control con in Controls){&nbsp; &nbsp; if (con is CheckBox checkBox)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp;checkBox.Checked ^= true;&nbsp; &nbsp; }}

MMMHUHU

那这个呢:public void TickChecker(){&nbsp; &nbsp; foreach (var con in Controls)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; CheckBox checkBox = con as CheckBox;&nbsp; &nbsp; &nbsp; &nbsp; if (null != checkBox)&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; checkBox.Checked ^= true;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP