C#2.0中的yield关键字行为

问题描述

| 在一种方法中,我产生了一个自定义对象,可以重用。以后再屈服。
private IEnumerable<DistributorMonthlyComparisonData> ExtractMonthlyAggregate(String CSVFilepath)
{
    DistributorMonthlyComparisonData unitData = new DistributorMonthlyComparisonData();
    while (!reader.EndOfStream)
        {
            if(something){
                // fill unitData
                }
            else{
                 yield return unitData;
                }
        }
}
在我程序的另一个对象中,我以这种方式调用所述方法:
List<DistributorMonthlyComparisonData> distribList = new List<DistributorMonthlyComparisonData>();
foreach (DistributorMonthlyComparisonData result in ExtractMonthlyAggregate(percorso))
  {
    distribList.Add(result);
  }
如果我没有在yield方法中创建,则在每次yield之后都会创建一个新对象
unitData = new DistributorMonthlyComparisonData();
我所得到的只是一个相同对象的列表。 我想知道:这是否是因为unitData作为引用传递,因此List只是对相同对象的引用列表?每次创建新的unitData()都会更改要传递的unitData对象的哈希值? 请赐教。 :) 编辑我对为什么会这样感兴趣。 我曾经认为该框架应该在对象上进行写时复制,因此基本上产生一个对象然后修改其属性然后再次产生它应该导致将两个不同的对象添加到列表中。     

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)