List<string> list = new List<string>(); var item = list.First(); // 异常:序列不包含任何元素 var item = list.ElementAt(0); // 异常:索引超出范围。必须为非负值并小于集合大小。 var item = list[0]; // 异常:索引超出范围。必须为非负值并小于集合大小。 var item = list.FirstOrDefault(); // 不报错。响应 Default,string 的 Default 为 null。 var item = list.ElementAtOrDefault(0); // 不报错。响应 Default,string 的 Default 为 null。
如上,不管用 First、ElementAt,还是用索引 [index],遇到元素不存在时,都会报错,只是提示略有不同。
实际中,我们用 FirstOrDefault、ElementAtOrDefault 更常见,因为通常我们更希望用个默认值,而不是触发异常。
相关阅读
IEnumerable 中 Single、SingleOrDefault、First、FirstOrDefault、Last、LastOrDefault 区别