繁体   English   中英

如何简化IF ELSE语句C#?

[英]How to simplify the IF ELSE statement C#?

if(currency.equal("CND"))
       if (string.IsNullOrEmpty(member.LastName))
                    {
                        return $"{member.FirstName}".Trim();
                    }
                    else
                    {
                        return $"{member.LastName} {member.FirstName}".Trim();
                    }

                else
                    if (string.IsNullOrEmpty(member.LastName))
                    {
                        return $"{member.FirstName}".Trim();
                    }
                    else
                    {
                        return $"{member.FirstName} {member.LastName}".Trim();
                    }

我需要简化此语句,但我不确定如何? 我是新手,我可能需要一些帮助。

这并不一定要简化它,而只是使其成为单线

return $"{(!member.LastName.IsNullOrEmpty() ? member.LastName : "")}{member.FirstName}".Trim();

但是,为了更好的清晰度和可读性, if/else块非常好...

        if (string.IsNullOrEmpty(member.LastName))
        {
            return $"{member.FirstName}".Trim();
        }
        else
        {
            return $"{member.LastName} {member.FirstName}".Trim();
        }

我绝对更喜欢if...else块而if...else使用单行字符串插值

您可以移动一些代码以减少重复。 如果缺少姓氏,则只有名字可以打印,因此请先测试该名字。 然后测试以首选顺序打印出全名的条件。

if (string.IsNullOrEmpty(member.LastName))
{
    return member.FirstName.Trim();
}
else
{
    return currency.equal("CND")
        ? $"{member.LastName} {member.FirstName}".Trim()
        : $"{member.FirstName} {member.LastName}".Trim();
}

您也可以将其重写为嵌套的三元操作,尽管它实际上并不更短,并且是否可读性取决于阅读它的人...

return (string.IsNullOrEmpty(member.LastName)
        ? member.FirstName
        : currency.equal("CND")
          ? $"{member.LastName} {member.FirstName}"
          : $"{member.FirstName} {member.LastName}").Trim();

这肯定是过度设计的。 不短,但意图更清晰,并且易于扩展。

public static string GetDisplayName(Member member, string currency)
{
    return string.Join(" ", GetDisplayNameParts(member, currency));
}

public static IEnumerable<string> GetDisplayNameParts(Member member, string currency)
{
    switch (currency)
    {
        case "CND":
            yield return member.LastName ?? ""
            yield return member.FirstName ?? ""
            yield break;

        default:
            yield return member.FirstName ?? ""
            yield return member.LastName ?? ""
            yield break;
    }
}

暂无
暂无

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

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