c# - 可以进一步改进此代码以连接地址吗?
问题描述
这段代码可以进一步改进吗?可能是通过保持简单但避免从对象值创建列表
public static string GetAddress(Address address)
{
if (address is null)
{
return string.Empty;
}
List<string> addressLines = new List<string> {
address.Line1,
address.Line2,
address.Town,
address.Country,
address.Postcode
};
IEnumerable<string> addressLinesWithValues =
addressLines.Where(l => !string.IsNullOrWhiteSpace(l));
return string.Join(" ", addressLinesWithValues.ToArray());
}
解决方案
不确定我会称之为改进,但它确实删除了List
创建:
public static string GetAddress(Address address)
{
return address == null
? string.Empty
: $"{(string.IsNullOrWhiteSpace(address.Line1) ? "" : $"{address.Line1} ")}" +
$"{(string.IsNullOrWhiteSpace(address.Line2) ? "" : $"{address.Line2} ")}" +
$"{(string.IsNullOrWhiteSpace(address.Town) ? "" : $"{address.Town} ")}" +
$"{(string.IsNullOrWhiteSpace(address.Country) ? "" : $"{address.Country} ")}" +
$"{(string.IsNullOrWhiteSpace(address.Postcode) ? "" : address.Postcode)}"
.TrimEnd();
}
另一个减少行数但保持相同功能/实现的选项是:
public static string GetAddress(Address address)
{
return string.Join(" ", new List<string>
{
address?.Line1,
address?.Line2,
address?.Town,
address?.Country,
address?.Postcode
}.Where(l => !string.IsNullOrWhiteSpace(l)));
}
推荐阅读
- ansible - ansible 比较文件中的两个字符串并检查是否等于定义的变量
- excel-formula - 在数组公式中使用日期范围
- c# - 如何在 C# 单元测试中伪造内置方法的返回?
- javascript - Angular 6:拒绝从“URL”执行脚本,因为它的 MIME 类型()不可执行,并且启用了严格的 MIME 类型检查
- haskell - Haskell 中的图谓词
- python - 如何运行 lambda 函数以在 pandas 中运行多条件排序?
- algorithm - 在 O(N + K) 时间内从 N 个整数数组中提取 K 个最大元素
- java - 从edittext SQLite-Android中选择查询
- sql - 替换存储在数据库中的逗号分隔列表
- node.js - 如何处理 MongoDB 的断开连接错误