我理解前两个陈述。但是,对于第三种说法,我想不通人是什么类型的人? IEnumerable(person) 还是 List(person)?我假设幕后有转换。有人可以解释一下语句 3 中使用了哪些技术吗?
- IEnumerable(Person) people = new IEnumerable(Person)();
- List(Person) people = new List(Person)();
- IEnumerable(Person) people = new List(Person)();
最佳答案
IEnumerable<Person> people = new IEnumerable<Person>();
无效。 IEnumerable
是一个接口(interface),它不能被实例化。
后两个有效:
List<Person> people = new List<Person>();
IEnumerable<Person> people = new List<Person>();
上面的第二个例子只是将集合转换为 IEnumerable<Person>
.这意味着功能 List
provides 不可用,除非您将集合转换回列表。简而言之,这并不是那么有用。转换为 IEnumerable
在定义方法时很有用,例如:
void DoSomethingWithPeople(IEnumerable<Person> people)
{
foreach(var person in people)
Console.WriteLine(person.Name);
}
在这里,我们不关心集合是列表、集合、链表等,我们只关心people
这个事实。可以枚举(即可枚举)。
关于C# 语法 :----- IEnumerable<Person> people = new List<Person>();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36638769/