簡體   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