Вопрос по c#, arrays – Нахождение последнего индекса массива

35

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

i означает значение индекса, то есть началось с 0 до n MAC
Вы ищете, как получить значение, хранящееся в последнем месте массива, или фактическое значение индекса? Nader Shirazie

Ваш Ответ

8   ответов
45

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

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

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

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

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

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

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

int index = array.Length - 1;

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

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

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

ил

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

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

2

делат

arr[arr.Length - 1]
1
1

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

var item = new Stack(arr).Pop();
No. Нет jebar8
1

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

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

Похожие вопросы