gpt4 book ai didi

c# - 解释这些 Linq 代码

转载 作者:行者123 更新时间:2023-11-30 19:39:56 24 4
gpt4 key购买 nike

public class Person {
public string First { get; set; }
public string Last { get; set; }
}

调用是:

var persons = new List<Person>();
persons.Add(new Person {First = "First 04", Last = "Last 04"});
persons.Add(new Person {First = "First 03", Last = "Last 03"});
persons.Add(new Person {First = "First 02", Last = "Last 02"});
persons.Add(new Person {First = "First 01", Last = "Last 01"});

var claim1 = new List<Person>(from c in persons select c);
var claim2 = new List<Person>(persons);

使用这个语句有什么区别或优势

var claim1 = new List<Person>(from c in persons select c); 

在这个声明上。

var claim2 = new List<Person>(persons);

最佳答案

第一种情况from c in persons select c返回 IEnumerable<Person> ,在第二个:List<Person>()但在这两种情况下public List(IEnumerable<T> collection)被调用,所以这两个语句之间没有真正的区别。

如果反汇编构造函数:

public List(IEnumerable<T> collection)
{
if (collection == null)
{
ThrowHelper.ThrowArgumentNullException(ExceptionArgument.collection);
}
ICollection<T> collection2 = collection as ICollection<T>;
if (collection2 == null)
{
this._size = 0;
this._items = List<T>._emptyArray;
using (IEnumerator<T> enumerator = collection.GetEnumerator())
{
while (enumerator.MoveNext())
{
this.Add(enumerator.Current);
}
}
return;
}
int count = collection2.Count;
if (count == 0)
{
this._items = List<T>._emptyArray;
return;
}
this._items = new T[count];
collection2.CopyTo(this._items, 0);
this._size = count;
}

我们可以看到,如果collectionICollection<T> , ICollection<T>.CopyTo被调用,这比一个一个地复制更有效率。

关于c# - 解释这些 Linq 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25678291/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com