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