C# 6.0 和 null
C# 6.0 and null
正在尝试重构以下代码:
var items = Common.Deserialize<DiagnosisItem[]>(path, false);
if (items != null)
foreach (var item in items)
{
var find = _items.Where(o => o.Value.Tooltip == item.Id).FirstOrDefault();
if (find.Value != null)
{
find.Value.Text = item.Text;
find.Value.Color = (Color)converter.ConvertFromInvariantString(item.Color);
}
}
谈论 null
检查。似乎 C#
6.0 没有为它添加任何新内容。正在考虑 "Oh, great, we have ?.
and ?[]
now! Should be cool!" 然后喜欢...嗯,但通常不会有右侧表达式...
我错了吗?这段代码能不能美一点?
C# 6 一方面,我个人更喜欢以下方法,您可以反转 if 语句以减少箭头代码。
var items = Common.Deserialize<DiagnosisItem[]>(path, false);
if (items == null)
return;
foreach (var item in items)
{
var find = _items.Where(o => o.Value.Tooltip == item.Id).FirstOrDefault();
if (find.Value == null)
continue;
find.Value.Text = item.Text;
find.Value.Color = (Color)converter.ConvertFromInvariantString(item.Color);
}
P.S。这将更适合代码审查网站
我通常喜欢尽可能多地放入查询中,因为查询比语句更具可组合性。
var items = Common.Deserialize<DiagnosisItem[]>(path, false);
var updates =
from item in items.NullToEmpty()
join find in _items on o.Value.Tooltip equals item.Id
where find.Value != null
select new { find.Value, item };
foreach (var u in updates)
{
u.Value.Text = u.item.Text;
u.Value.Color = (Color)converter.ConvertFromInvariantString(u.item.Color);
}
在这里,我认为不需要新的 null 运算符。
作为一个很好的副作用,FirstOrDefault
的二次时间复杂度消失了。
正在尝试重构以下代码:
var items = Common.Deserialize<DiagnosisItem[]>(path, false);
if (items != null)
foreach (var item in items)
{
var find = _items.Where(o => o.Value.Tooltip == item.Id).FirstOrDefault();
if (find.Value != null)
{
find.Value.Text = item.Text;
find.Value.Color = (Color)converter.ConvertFromInvariantString(item.Color);
}
}
谈论 null
检查。似乎 C#
6.0 没有为它添加任何新内容。正在考虑 "Oh, great, we have ?.
and ?[]
now! Should be cool!" 然后喜欢...嗯,但通常不会有右侧表达式...
我错了吗?这段代码能不能美一点?
C# 6 一方面,我个人更喜欢以下方法,您可以反转 if 语句以减少箭头代码。
var items = Common.Deserialize<DiagnosisItem[]>(path, false);
if (items == null)
return;
foreach (var item in items)
{
var find = _items.Where(o => o.Value.Tooltip == item.Id).FirstOrDefault();
if (find.Value == null)
continue;
find.Value.Text = item.Text;
find.Value.Color = (Color)converter.ConvertFromInvariantString(item.Color);
}
P.S。这将更适合代码审查网站
我通常喜欢尽可能多地放入查询中,因为查询比语句更具可组合性。
var items = Common.Deserialize<DiagnosisItem[]>(path, false);
var updates =
from item in items.NullToEmpty()
join find in _items on o.Value.Tooltip equals item.Id
where find.Value != null
select new { find.Value, item };
foreach (var u in updates)
{
u.Value.Text = u.item.Text;
u.Value.Color = (Color)converter.ConvertFromInvariantString(u.item.Color);
}
在这里,我认为不需要新的 null 运算符。
作为一个很好的副作用,FirstOrDefault
的二次时间复杂度消失了。