3 回答

TA贡献1786条经验 获得超13个赞
这并不一定简化了它,它只是使它成为一个单行
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

TA贡献1843条经验 获得超7个赞
您可以移动一些代码以删除重复项。如果缺少姓氏,则名字是唯一要打印的姓氏,因此请先进行测试。然后测试按首选顺序打印出全名的条件。
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();

TA贡献1875条经验 获得超5个赞
这绝对是过度设计的。不是更短,但意图更清晰,易于扩展。
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;
}
}
- 3 回答
- 0 关注
- 140 浏览
添加回答
举报