如何简化IF ELSE语句C#?

时间:2019-02-12 03:48:57

标签: c# if-statement

IP

我需要简化此语句,但不确定如何?我是新手,可能需要一些帮助。...有什么建议吗?

3 个答案:

答案 0 :(得分:3)

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

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块比使用单行字符串插值

答案 1 :(得分:1)

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

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();

答案 2 :(得分:0)

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

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;
    }
}