我现在有这样的事情:
public class Person
{
public string Firstname { get; set; }
public string Lastname { get; set; }
}
public List<Person> CreatePersons(int numberOfPersons)
{
var persons = new List<Person>();
for (int i = 0; i < numberOfPersons; i++)
{
persons.Add(new Person())
}
return persons;
}
我知道,如果我使用array
话,我可能只是这样做:
var persons = new Person[numberOfPersons];
我的问题是:
我想,一个阵列内部可能不完全一样的东西使用循环创建数组但具有不同的符号。但是,这不是现在关注的问题,对于这个问题,我在一个简单的符号只是感兴趣。
怎么样,
var persons = Enumerable.Range(0, numberOfPersons).Select(i => new Person()).ToList();
你也可以做的更钝,
var persons = Enumerable
.Repeat<Func<Person>>(() => new Person(), numberOfPersons)
.Select(f => f())
.ToList();
最后,我找到for
循环更容易理解和更迅速地执行。
var persons = new List<Person>(numberOfPersons);
for (int i = 0; i < numberOfPersons; i++)
{
persons.Add(new Person())
}
你已经有一个班轮构建一个数组,如何有关转换成你想要的名单?
new Person[numberOfPersons].ToList();
或者你可以使用System.Array.ConvertAll
,它仍然使用for
循环,但你不看到它:)...
var persons = Array.ConvertAll(new Person[30], _ => new Person());
注:这种方法将分配阵列的两倍,因为它会分配所得的阵列和复制使用for
循环从输入元件...