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 關注
- 130 瀏覽
添加回答
舉報