如何简化IF-ELSE语句C#?

如何简化IF-ELSE语句C#?,c#,if-statement,C#,If Statement,我需要把这句话简化得更短,但我不知道怎么做?我是这方面的新手我可能需要一些帮助。。有什么建议吗?这肯定是设计过度了。不短,但意图更清晰,易于扩展 if(currency.equal("CND")) if (string.IsNullOrEmpty(member.LastName)) { return $"{member.FirstName}".Trim();

我需要把这句话简化得更短,但我不知道怎么做?我是这方面的新手我可能需要一些帮助。。有什么建议吗?

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

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();
                    }
公共静态字符串GetDisplayName(成员,字符串货币)
{
返回字符串.Join(“,GetDisplayNameParts(成员,货币));
}
公共静态IEnumerable GetDisplayNameParts(成员、字符串货币)
{
交换机(货币)
{
案例“CND”:
收益返回成员。LastName??“”
收益返回成员。FirstName??“”
屈服断裂;
违约:
收益返回成员。FirstName??“”
收益返回成员。LastName??“”
屈服断裂;
}
}

这绝对是设计过度了。不短,但意图更清晰,易于扩展

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();
                    }
公共静态字符串GetDisplayName(成员,字符串货币)
{
返回字符串.Join(“,GetDisplayNameParts(成员,货币));
}
公共静态IEnumerable GetDisplayNameParts(成员、字符串货币)
{
交换机(货币)
{
案例“CND”:
收益返回成员。LastName??“”
收益返回成员。FirstName??“”
屈服断裂;
违约:
收益返回成员。FirstName??“”
收益返回成员。LastName??“”
屈服断裂;
}
}

这并不一定会简化它,它只是使它成为一个单行程序

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

然而,为了更好的清晰度和可读性,
if/else
块非常好

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

我当然更喜欢
if…else
块,而不是使用一行字符串插值

这并不一定会简化它,它只是使它成为一行

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

然而,为了更好的清晰度和可读性,
if/else
块非常好

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 (string.IsNullOrEmpty(member.LastName))
{
    return member.FirstName.Trim();
}
else
{
    return currency.equal("CND")
        ? $"{member.LastName} {member.FirstName}".Trim()
        : $"{member.FirstName} {member.LastName}".Trim();
}

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

        if (string.IsNullOrEmpty(member.LastName))
        {
            return $"{member.FirstName}".Trim();
        }
        else
        {
            return $"{member.LastName} {member.FirstName}".Trim();
        }
您也可以将其重写为嵌套的三元操作,尽管它实际上并不更短,而且它是否更可读取决于阅读它的人

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

编译吗?看起来代码只是复制的。请修复您的代码(缺少顶级if语句),以便我们能够准确地回答问题。只需使用?:接线员(状况)?res1:res2;但正如@Leo所说,如果它能够编译并且可读,那么就没有必要将它放在更少的语句中。编译器将以相同的方式处理它way@Zinov不同意。这段代码很难读。它应该减少,以增加可读性-假设您没有时间紧迫。编译吗?看起来代码只是重复。请修复您的代码(缺少顶级if语句),以便我们能够准确回答问题。只需使用?:接线员(状况)?res1:res2;但正如@Leo所说,如果它能够编译并且可读,那么就没有必要将它放在更少的语句中。编译器将以相同的方式处理它way@Zinov不同意。这段代码很难读。它应该减少以增加可读性-假设您没有及时处理。@hunt您当前的代码无法编译。我假设您对
LastName
进行了简单的验证检查。如果我的假设是正确的,那么您当前的代码就是fine@hunt如果您当前的代码有效,我会按原样使用它。如果您需要添加不同的货币,或者在多个地方使用此代码,我可能会将其移到自己的方法中,并重新设计以实现可扩展性。@hunt您当前的代码无法编译。我假设您对
LastName
进行了简单的验证检查。如果我的假设是正确的,那么您当前的代码就是fine@hunt如果您当前的代码有效,我会按原样使用它。如果您需要添加不同的货币,或在多个位置使用此代码,我可能会将它移到自己的方法中,并重新设计它的可扩展性。hi just quick question in case将来可能会添加更多货币我可以用同样的方式使用它吗?hi just quick question in case将来可能会添加更多货币我可以用同样的方式使用它吗?