查找数组的最后一个索引

时间:2009-06-29 05:53:05

标签: c# arrays

如何在C#中检索数组的最后一个元素?

11 个答案:

答案 0 :(得分:98)

LINQ提供Last()

csharp> int[] nums = {1,2,3,4,5};
csharp> nums.Last();              
5

当您不想不必要地制作变量时,这很方便。

string lastName = "Abraham Lincoln".Split().Last();

答案 1 :(得分:48)

该数组具有Length属性,可以为您提供数组的长度。由于数组索引从零开始,最后一项将位于Length - 1

string[] items = GetAllItems();
string lastItem = items[items.Length - 1];
int arrayLength = array.Length;

在C#中声明数组时,您给出的数字是数组的长度:

string[] items = new string[5]; // five items, index ranging from 0 to 4.

答案 2 :(得分:6)

使用Array.GetUpperBound(0)Array.Length包含数组中的项目数,因此读取长度-1仅适用于假设数组基于零的情况。

答案 3 :(得分:4)

计算最后一项的索引:

int index = array.Length - 1;

如果数组为空,会得到-1 - 你应该将它视为特殊情况。

要访问最后一个索引:

array[array.Length - 1] = ...

... = array[array.Length - 1]
如果数组实际为空(为0),

将导致异常。

答案 4 :(得分:3)

With C# 8

int[] array = { 1, 3, 5 };
var lastItem = array[^1]; // 5

答案 5 :(得分:2)

说你的数组名为arr

arr[arr.Length - 1]

答案 6 :(得分:1)

如果数组为空,则以下将返回NULL,否则返回最后一个元素。

var item = (arr.Length == 0) ? null : arr[arr.Length - 1]

答案 7 :(得分:1)

这值得一提吗?

var item = new Stack(arr).Pop();

答案 8 :(得分:0)

此外,从.NET Core 3.0(和.NET Standard 2.1)开始,您可以使用Index类型来保持数组索引的结尾:

var lastElementIndexInAnyArraySize = ^1;
var lastElement = array[lastElementIndexInAnyArraySize];

您可以使用此索引获取任何长度的数组中的最后一个数组值。例如:

var firstArray = new[] {0, 1, 1, 2, 2};
var secondArray = new[] {3, 3, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5};
var index = ^1;
var firstArrayLastValue = firstArray[index]; // 2
var secondArrayLastValue = secondArray[index]; // 5

答案 9 :(得分:0)

数组从索引0开始到n-1结束。

static void Main(string[] args)
{
    int[] arr = { 1, 2, 3, 4, 5 };
    int length = arr.Length - 1;   // starts from 0 to n-1

    Console.WriteLine(length);     // this will give the last index.
    Console.Read();
}

答案 10 :(得分:0)

C#8.0中的新增功能,您可以使用所谓的“帽子”(^)运算符!当您想一行完成某件事时,这很有用!

var mystr = "Hello World!";
var lastword = mystr.Split(" ")[^1];
Console.WriteLine(lastword);
// World!

代替原来的方式:

var mystr = "Hello World";
var split = mystr.Split(" ");
var lastword = split[split.Length - 1];
Console.WriteLine(lastword);
// World!

它并没有节省太多空间,但是看起来更加清晰(也许我只是因为我来自python才认为这件事)。这比调用.Last().Reverse() Read more at MSDN

之类的方法要好得多

编辑:您可以像下面这样向您的班级添加此功能:

public class MyClass
{
  public object this[Index indx]
  {
    get
    {
      // Do indexing here, this is just an example of the .IsFromEnd property
      if (indx.IsFromEnd)
      {
        Console.WriteLine("Negative Index!")
      }
      else
      {
        Console.WriteLine("Positive Index!")
      }
    }
  }
}

Index.IsFromEnd会告诉您是否有人在使用'hat'(^)运算符