[英]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.