如何在C#中检索数组的最后一个元素?
答案 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]
如果数组实际为空(将导致异常。
答案 4 :(得分:3)
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'(^)运算符