繁体   English   中英

如何使用 lambda 缩短没有 else 语句的 if 语句?

[英]How can I shorten an if without else statement with lambda?

以下是代码,我不知道如何使用 lambda 实现以下功能

public void AddClimber(string name, int age, Skill skill)  
{
   if (GetClimber(name) == null)
   {
        Climber toAdd = new Climber(name, age, skill);
        this.climbers.Add(toAdd);

        if (AddedLowLevelClimer != null)
        {
            if (skill == Skill.LOW) { AddedLowLevelClimer(toAdd); }
        }
        else if (AddedMediumLevelClimer != null)
        {
            if (skill == Skill.LOW) { AddedMediumLevelClimer(toAdd); }
        }
        else if (AddedHighLevelClimer != null)
        {
            if (skill == Skill.LOW) { AddedHighLevelClimer(toAdd); }
        }
        else if (AddedProLevelClimer != null)
        {
            if (skill == Skill.LOW) { AddedProLevelClimer(toAdd); }
        }           
    }
}

您可以尝试使用空合并运算符来选择第一个非空处理程序:

    var target = AddedLowLevelClimer
                         ?? AddedMediumLevelClimer 
                         ?? AddedHighLevelClimer 
                         ?? AddedProLevelClimer;
    if (target != null)
    {
        if (skill == Skill.LOW) 
            target(toAdd); 
    }           

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM