修改foreach循环内对象的属性不起作用?

Rod*_*257 5 .net c# foreach

这令我感到困惑.我正在使用PetaPoco从数据库中检索某些值,然后循环它们并检索一个值以分配给每个对象的一个​​属性.

    public IEnumerable<RetreaveIndex> FillResults(IEnumerable<RetreaveIndex> results)
    {
        //add the associated users
        foreach (RetreaveIndex index in results)
        {
            index.AssociatedUsers = _registeredUserDao.GetUsersByIndex(index).ToList();
        }
        return results;
    }
Run Code Online (Sandbox Code Playgroud)

当我在foreach循环期间设置断点时,正确设置了AssociatedUsers属性. 在foreach循环期间

但是在循环结束的断点处,它没有保存它? 在此输入图像描述

我很困惑,不应该将Index作为对正在被修改的内存中的位置的引用吗?毕竟这是一个对象.我在这里错过了什么?

Dar*_*con 8

  1. 什么是IEnumerable实现?它可以返回对象的副本吗?

  2. RetreaveIndex是一个结构,因此是一个值类型?如果是这样,那么变量index将是一个副本.