Нахождение последнего индекса массива

Как вы получаете последний элемент массива в C #?

 MAC29 июн. 2009 г., 08:01
i означает значение индекса, то есть началось с 0 до n
 Nader Shirazie29 июн. 2009 г., 07:59
Вы ищете, как получить значение, хранящееся в последнем месте массива, или фактическое значение индекса?

Ответы на вопрос(8)

если массив пуст, иначе последний элемент.

var item = (arr.Length == 0) ? null : arr[arr.Length - 1]
 user21536125 сент. 2011 г., 12:07
Это также можно записать какvar item = (arr.Length == 0) ?? arr[arr.Length - 1].
 Matthew Steven Monkan12 мар. 2019 г., 02:56
@ user215361 Нет, это недопустимый C #. Ваш пример приведет к:error CS0019: Operator '??' cannot be applied to operands of type 'bool' and 'int'

LINQ обеспечиваетПрошлой(:

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

Это удобно, если вы не хотите создавать переменные без необходимости.

string lastName = "Abraham Lincoln".Split().Last();
 Arijoon04 февр. 2016 г., 17:33
Это должен быть главный ответ
 HMR22 дек. 2016 г., 05:48
Last хорош, но он очень специфичен, чтобы получить только последний элемент. Есть ли в C # что-то вроде ломтика, который можно использовать какslice(-2) чтобы получить последние 2 илиslice(0,-2) чтобы получить предметы с самого начала, кроме последних 2? Тогда такая функция, как Last, не понадобится, как можно сделатьslice(-1) как я привык делать на других языках.

Стоит ли упоминать?

var item = new Stack(arr).Pop();
 jebar814 февр. 2019 г., 19:26
No. Нет
Решение Вопроса

Массив имеет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.
 ftvs07 дек. 2012 г., 03:57
Это не удается, когда в массиве нет элементов, в этом случае(items.Length - 1) == -1

Array.GetUpperBound (0). Array.length содержит количество элементов в массиве, поэтому чтение длины -1 работает только в предположении, что массив равен нулю.

 seebiscuit11 февр. 2014 г., 17:01
UPDATE: функция GetUpperBound (0) будет возвращать толькоint. Он может не возвращать то, что ожидает пользователь для других числовых массивов, и не все для нечисловых массивов. Вот почему за 3 не проголосовали.
 seebiscuit11 февр. 2014 г., 16:00
Потрясающе! Почему за это не проголосовали (до 3 с моим голосом во время этого комментария)? На сегодняшний день это самое элегантное решение без LINQ.
 mgttlinger21 мар. 2013 г., 14:15
Разве не все массивы в C # основаны на нуле?
 sisve21 мар. 2013 г., 15:29
@ mgttlinger, большинство из них есть, но вы можете создавать массивы, не основанные на нулях, с помощью Msdn.microsoft.com / EN-US / библиотека / x836773a.aspx или вы можете столкнуться с ними при общении с библиотеками, написанными на других языках.

int index = array.Length - 1;

Вы получите -1, если массив пуст - вы должны рассматривать его как особый случай.

Для доступа к последнему индексу:

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

ил

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

вызовет исключение, если массив на самом деле пуст (длина равна 0).

делат

arr[arr.Length - 1]

Ваш ответ на вопрос