如何在C# for循环中设置可传入的自定义条件?
解决方法
你的问题核心是原方法里的bool condition是静态值,没法随着循环变量i动态变化,要实现依赖i的动态判断,需要用委托类型来传递条件逻辑,具体步骤如下:
1. 修改方法定义
把原来的bool condition参数替换成Func<int, bool> loopCondition,这个委托可以接收循环里的i作为参数,返回布尔值表示是否继续循环:
private void AddToDataTable(int j, Func<int, bool> loopCondition) { for (int i = j; loopCondition(i); j++ ) { //do something } }
2. 调用方法时传入动态条件
调用的时候直接用Lambda表达式传入你需要的判断逻辑:
- 当条件是
dataGridView.Rows.Count > i时:
AddToDataTable(0, i => dataGridView.Rows.Count > i);
- 当条件是
i % 3 != 0时:
AddToDataTable(0, i => i % 3 != 0);
补充说明
如果你的条件需要用到其他外部变量(比如dataGridView),只要调用方法的作用域能访问到该变量,Lambda表达式就可以直接引用,不需要额外处理。
内容的提问来源于stack exchange,提问作者devChing
相关产品推荐
相关产品推荐

