Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ttom行是指当我说people.ElementAt(0).Name=“New Name”时,当返回的查询指向具体集合中的对象时,对象会得到更新。但是,当底层集合只是一个Ienumerable(或未定义)时,它就不起作用了。当然,框架仍然将这些对象存储在内_C#_List_Collections_Ienumerable - Fatal编程技术网

C# ttom行是指当我说people.ElementAt(0).Name=“New Name”时,当返回的查询指向具体集合中的对象时,对象会得到更新。但是,当底层集合只是一个Ienumerable(或未定义)时,它就不起作用了。当然,框架仍然将这些对象存储在内

C# ttom行是指当我说people.ElementAt(0).Name=“New Name”时,当返回的查询指向具体集合中的对象时,对象会得到更新。但是,当底层集合只是一个Ienumerable(或未定义)时,它就不起作用了。当然,框架仍然将这些对象存储在内,c#,list,collections,ienumerable,C#,List,Collections,Ienumerable,ttom行是指当我说people.ElementAt(0).Name=“New Name”时,当返回的查询指向具体集合中的对象时,对象会得到更新。但是,当底层集合只是一个Ienumerable(或未定义)时,它就不起作用了。当然,框架仍然将这些对象存储在内存中的某个位置,但它们无法更新。这是否意味着框架将Ienumerable的基础集合(示例中的案例1)存储为值类型或类似的内容?框架不会将这些对象存储在某个位置,除非您告诉它(例如,通过枚举构建列表)。每次调用ElementAt(0).Name时


ttom行是指当我说people.ElementAt(0).Name=“New Name”时,当返回的查询指向具体集合中的对象时,对象会得到更新。但是,当底层集合只是一个Ienumerable(或未定义)时,它就不起作用了。当然,框架仍然将这些对象存储在内存中的某个位置,但它们无法更新。这是否意味着框架将Ienumerable的基础集合(示例中的案例1)存储为值类型或类似的内容?框架不会将这些对象存储在某个位置,除非您告诉它(例如,通过枚举构建列表)。每次调用ElementAt(0).Name时,它都在创建索引为0的Person对象。然后将该对象更新为“新名称”,然后将该对象丢弃;没有托利斯特或托利斯特toArray@Menol同样,
people
是一个查询,而不是该查询的结果。该对象中存储的所有内容都是一组指令,这些指令描述了当请求时如何获得结果。它们还不存在。(这就是为什么
people
是一个坏名字,你不是在存储人,你是在存储一个查询,以后可以找到你的人。)@Menol这是一个查询,不是它指向的列表。在一种情况下,你实际上有一个列表,而在另一种情况下,你根本没有列表,你有一个查询,这两个概念完全不同,你对待它们就像它们是一样的。
class Person
{
    public string Name { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        var numbers = new int[] {1,2,3};

        var people = numbers.Select(n => new Person { Name = "Person " + n.ToString() });


        for (int i = 0; i < people.Count(); i++)
        {
            people.ElementAt(i).Name = "New Name";
        }

        people.ToList().ForEach(i => Console.WriteLine(i.Name));

        // OUTPUT: Person1, Person2, Person3
    }

}
class Person
{
    public string Name { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        var numbers = new int[] {1,2,3};

        // Note the .ToList() at the end of this line.
        var people = numbers.Select(n => new Person { Name = "Person " + n.ToString() }).ToList();


        for (int i = 0; i < people.Count(); i++)
        {
            people.ElementAt(i).Name = "New Name";
        }

        people.ToList().ForEach(i => Console.WriteLine(i.Name));


        Console.ReadLine();
        // OUTPUT: New Name, New Name, New Name
    }

}
people.ElementAt(i).Name = "New Name";