You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 15:04:53