IP
我需要简化此语句,但不确定如何?我是新手,可能需要一些帮助。...有什么建议吗?
答案 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;
}
}