是否有内置方法来获取List <>的最大索引?

pen*_*ake 0 .net c# list

C#中是否有内置方法来获取List中的最大索引?

SWe*_*eko 10

不,没有内置方法.你可以随时使用

int maxIndex = myList.Count - 1;
Run Code Online (Sandbox Code Playgroud)

对于List,保证元素将在0..Count-1范围内,因此您可以创建扩展方法:

public static int LastIndex<T>(this List<T> list)
{
  return list.Count-1;
}
Run Code Online (Sandbox Code Playgroud)

当然,当列表有0个元素时,这些行将返回-1,这可能是个问题.


Jon*_*eet 8

最大有效索引的大小始终为1,因此:

int maxIndex = list.Count - 1;
Run Code Online (Sandbox Code Playgroud)

如果要以非常易读的方式获取最后一个索引的,可以使用LINQ:

var item = list.Last();
Run Code Online (Sandbox Code Playgroud)

请注意,这不会是相当的使用一样高效list[list.Count - 1],但它不会是一个O(n)的操作- LINQ到对象是在不同的地方占便宜优化IList<T>.

  • 请记住,如果`List`为空,则在使用`Last()`时会抛出`InvalidOperationException`. (2认同)