【发布时间】:2013-01-17 21:11:38
【问题描述】:
惊讶地发现以下调用似乎不记得对该字段所做的更改。
private void Foo(IEnumerable<Blopp> blopps)
{
foreach (Blopp blopp in blopps)
blopp.SomeField = PREFIX + blopp.SomeField;
String test = blopps.First().SomeField;
}
test 变量在使用 LINQ to data 获取数组时缺少前缀。我需要评估 IEnumerable 并将其设为 List 以使对字段的更改得以维持。为什么会这样?我希望程序能够识别该字段被稍后使用并对其进行评估。
private void Foo(IEnumerable<Blopp> _blopps)
{
List<Blopp> blopps = _blopps.ToList();
foreach (Blopp blopp in blopps)
blopp.SomeField = PREFIX + blopp.SomeField;
String test = blopps.First().SomeField;
}
【问题讨论】:
-
_blopps和IEnumerbale是什么?将其设为列表可能会解决其他动态生成的IEnumerable。 -
@SteveB 这是一个由 class 定义的类型。
标签: c#