C#中如何简化执行方法调用而非返回值的if条件语句
C# 无返回值方法调用场景的if逻辑简化方案
待简化的原始逻辑为:目标字符串不为空字符串时,向DataGridView控件新增行并传入该字符串,原始代码如下:
if (string != "") { dataGridView1.Rows.Add(string); }
目前常见资料大多仅介绍带返回值场景下的三元运算符简化写法,未覆盖if块内仅执行方法调用(返回值无需使用)的场景,以下是可行的简化方案:
- 方案1:利用&&短路逻辑特性(单场景使用最简洁)
C#中的&&逻辑与运算符具备短路特性:仅当左侧表达式计算结果为true时,才会执行右侧的表达式。由于C#允许将方法调用作为独立语句(不需要强制接收方法返回值),因此可以直接把if判断和方法调用用&&连接,完全替代单if块的写法:
// 和原始逻辑完全等价,仅判断是否为空字符串 string != "" && dataGridView1.Rows.Add(string); // 更鲁棒的优化写法,同时兼容字符串为null的场景,避免触发空引用异常 !string.IsNullOrEmpty(string) && dataGridView1.Rows.Add(string);
这种写法可以正常通过编译,运行逻辑和原始if块完全一致,没有额外性能开销。
- 方案2:封装通用扩展方法(适合多场景复用)
如果项目中存在大量「字符串非空才执行对应操作」的重复逻辑,可以封装一个通用的字符串扩展方法,统一非空判断规则,减少重复代码:
// 扩展方法静态类中定义 public static void IfNotNullOrEmpty(this string target, Action<string> executeAction) { if (!string.IsNullOrEmpty(target)) { executeAction(target); } } // 业务代码中的调用写法 str.IfNotNullOrEmpty(s => dataGridView1.Rows.Add(s));
使用建议
不要为了刻意缩短代码行数牺牲可读性。如果对应逻辑仅在代码中出现一次,原生if块的写法反而是可读性最高的,所有开发者都能一眼看懂逻辑,不需要额外承担特殊写法的认知成本。
内容的提问来源于stack exchange,提问作者MarcelloWrites
相关产品推荐
相关产品推荐

