如何简化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将来可能会添加更多货币我可以用同样的方式使用它吗?