C#LINQ关于在执行查询时创建临时列表的问题

C#LINQ关于在执行查询时创建临时列表的问题,c#,linq,C#,Linq,我现在正在学习LINQ基础知识,出现了一些问题。例如,我有一个整数列表- var s=[3,4,5,6,1] 我无法理解为什么我可以毫无错误地执行此查询: s.Select((val,ind)=>new{value=val,index=ind}) 在List中,我们无法访问索引,并且Select语句中的lambda函数如何理解ind是一个索引器?因为它在Enumerable类中的Select方法声明中提到过 // selector: // A transform function

我现在正在学习LINQ基础知识,出现了一些问题。例如,我有一个整数列表-

var s=[3,4,5,6,1]
我无法理解为什么我可以毫无错误地执行此查询:

s.Select((val,ind)=>new{value=val,index=ind})

List
中,我们无法访问索引,并且
Select
语句中的lambda函数如何理解
ind
是一个索引器?

因为它在
Enumerable
类中的
Select
方法声明中提到过

//   selector:
//     A transform function to apply to each source element; the second parameter of
//     the function represents the index of the source element.

public static IEnumerable<TResult> Select<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, int, TResult> selector);
//选择器:
//应用于每个源元素的变换函数;第二个参数
//函数表示源元素的索引。
公共静态IEnumerable选择(此IEnumerable源,Func选择器);

您所说的“在
列表中
我们无权访问索引”是什么意思?“Select语句中的lambda函数如何理解
ind
是一个索引器?”那么,什么东西怎么知道什么东西是什么意思呢?
Console.WriteLine
如何知道向控制台打印一行?简短回答:它们是这样设计和实现的。
Select
可以计数。如果我开始一次给你一个未知数量的物品,你可以告诉我你收到了多少物品,对吗?我不知道你为什么认为你不能用
List
访问索引。