我在这里和其他地方做了一些搜索,但无法找到我正在问的问题。我通过一些示例代码完成了这段代码。
public CountryViewModel(Region[] regions)
{
_regions = new ReadOnlyCollection<RegionViewModel>(
(from region in regions
select new RegionViewModel(region))
.ToList());
}
我相信以上内容相当于:
public CountryViewModel(Region[] regions)
{
_regions = new ReadOnlyCollection<RegionViewModel>();
foreach (region in regions)
{
_regions.Add(new RegionViewModel(region));
}
}
我的理解是否正确?
答案 0 :(得分:3)
不,代码片段不相同。第二个片段由于多种原因而无法编译。您尚未定义region
,ReadOnlyCollection<T>
没有无参数构造函数,ReadOnlyCollection<T>
没有Add
方法。由于第一个代码段编译并成功创建了ReadOnlyCollection<RegionViewModel>
,因此它不会做同样的事情。
答案 1 :(得分:-1)
是。这两个片段都实现了相同的目标(除了轻微的语法问题),概念它们将具有相同的最终结果。
但是,可能存在我无法评论的性能差异。我对C#的内部工作没有很好的工作知识,但我怀疑LINQ语句会产生更好的性能。尽管如此,我可能完全错误。
修改强> 我上面的陈述假定了一个正常的集合,而不是一个ReadOnlyCollection,因为我错过了这个细节。我撤回了我的陈述。第一个代码示例是唯一可以在这里工作的示例,因为该结构是ReadOnly。