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

如何基于布尔值简化属性赋值代码以减少冗余?

简化基于布尔值设置对象属性的代码

当然有更简洁的方式来处理这种场景!你当前的代码里重复了foreach逻辑和一堆else if分支,我们可以通过条件与赋值操作的映射关系来消除冗余,同时让代码更易维护。

核心思路

把每个布尔条件和对应的属性赋值逻辑打包成一组,然后遍历这组映射,找到第一个满足条件的项,一次性完成所有items的属性赋值。这样既避免了重复的foreach,也让新增条件/属性的操作变得更简单。

简化后的代码示例

假设你的Item类包含B、C、E等属性,我们可以这样改写:

if (a)
{
    // 定义条件与赋值操作的映射列表,按优先级排序
    var propertyAssignments = new List<(bool Condition, Action<Item> AssignAction)>
    {
        (b, item => item.B = B),
        (c, item => item.C = C),
        // 这里可以继续添加其他条件和对应的赋值逻辑,比如d、e...
        (e, item => item.E = E)
    };

    // 找到第一个满足条件的赋值操作
    var matchingAssignment = propertyAssignments.FirstOrDefault(p => p.Condition);
    if (matchingAssignment.AssignAction != null)
    {
        foreach (var item in items)
        {
            matchingAssignment.AssignAction(item);
        }
    }
}

为什么这样更好?

  • 消除冗余:只写一次foreach,不用在每个分支里重复编写遍历逻辑
  • 扩展性强:如果后续要添加新的属性(比如D),只需要在propertyAssignments里新增一行即可,不用修改原有分支结构
  • 可读性更高:所有条件和对应的操作一目了然,逻辑结构更清晰

如果你的C#版本不支持值元组(比如低于C# 7.0),可以用KeyValuePair<bool, Action<Item>>或者自定义一个简单的类来替代,核心逻辑是完全一致的。

内容的提问来源于stack exchange,提问作者Anish

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:15:30