Подтвердить что ты не робот

Существует ли указатель массива

Я унаследовал некоторый код на работе, который имеет очень плохой запах. Я надеюсь найти самое безболезненное решение.

Есть ли способ проверить, является ли какое-либо произвольное число допустимым элементом в массиве?

Пример. Мне нужно проверить, существует ли массив [25].

Предпочтительно, я бы предпочел сделать это, не делая foreach() через массив, чтобы найти строки.

Есть ли способ сделать это, или я придерживаюсь петли foreach?

4b9b3361

Ответ 1

Проверить длину

int index = 25;
if(index >= 0 && index < array.length)
{
    //it exists
}

Ответ 2

Вы также можете использовать LINQ для этого:

var exists = array.ElementAtOrDefault(index) != null;

Ответ 3

Что именно означает "действительный элемент"? Вы могли бы просто сделать:

if (array.Length >= 26)

который скажет вам, является ли 25 допустимым индексом в массиве или нет (предполагая нижнюю границу 0).

Если вам нужно знать, является ли оно ненулевым или нет, просто используйте:

if (array[25] != null)

(или комбинация из двух).

Если это не поможет, пожалуйста, дайте более точное значение "действительный" для вашей проблемы.

Ответ 4

Предполагая, что вы также хотите проверить, не является ли элемент нулевым

if (array.Length > 25 && array[25] != null)
{
    //it exists
}

Ответ 5

// I'd modify this slightly to be more resilient to a bad parameter
// it will handle your case and better handle other cases given to it:

int index = 25;

if (index >= 0 && index < array.Length)
{
    // Array element found
}

Ответ 6

Вы можете использовать длину массива и посмотреть, подходит ли ваш произвольный номер в этом диапазоне. Например, если у вас есть массив размером 10, то массив [25] недействителен, так как 25 не менее 10.

Ответ 7

Вы можете использовать Список, чтобы проверить существование.

List<int> l = new List<int>();
l.Add(45);
...
...

if (l.Count == 25) {
  doStuff();
}
int num = 45;
if (l.Contains(num)) {
  doMoreStuff();
}

Ответ 8

array.length расскажет вам, сколько элементов находится в массиве

Ответ 9

Вы можете проверить, меньше ли индекс меньше длины массива. Это не проверяет нули или другие нечетные случаи, когда индексу может быть присвоено значение, но он явно не указан явно.

Ответ 10

Вы можете проверить длину массива, чтобы увидеть, действителен ли элемент 25 в смысле нахождения в массиве, тогда вы можете использовать

if (array.Length > 25)
{ 
   if (array[25] != null)
   {
       //good
   }
}

чтобы узнать, был ли установлен элемент массива.

Ответ 11

Звучит очень похоже на то, что вы используете массив для хранения разных полей. Это определенно запах кода. Я бы избегал использовать массивы как можно больше, поскольку они обычно не подходят (или нужны) в высокоуровневом коде.

Переключение на простой словарь может быть работоспособным вариантом в краткосрочной перспективе. Как и использование большого класса мешков. Есть много вариантов. Проблема, с которой вы сейчас сталкиваетесь, - это всего лишь симптом плохого дизайна, вы должны взглянуть на исправление основной проблемы, а не на исправление плохой конструкции, чтобы она выглядела как-то вроде sorta в настоящее время.

Ответ 12

Вы можете проверить длину массива (array.length), если значение больше, чем искомый индекс, это означает, что этот массив позиции [index] существует в массиве.

// Assume you would like to check index 25 as in your example
int indexToBeCheck = 25; 

if(array.length > indexToBeCheck)
{
    // exists
}

Обратимся к вашему примеру: давайте проверим, есть ли индекс 25 в массиве?, также предположим, что длина массива равна 25, что означает, что последний индекс в массиве равен 24 (массив - нулевой индекс). Тогда (array.length> indexToBeCheck) выдаст значение false, значит indexToBeCheck (вне диапазона массива) не существует в массиве.