Массивы в C # имеют свойство .Length
, которое вы можете проверить, прежде чем пытаться передать элемент от одного до SomeMethod
, и типичный подход состоит в том, чтобы циклически проходить через каждый элемент массива, а не гадать, есть ли индексдопустимо:
for (int i = 0; i < sArray.Length; i++)
{
SomeMethod(sArray[i]);
}
Вы не сможете избежать IndexOutOfRangeException
, если будете ссылаться на индекс в массиве, который не существует.
Однако, если выесли вам действительно нужен метод с таким типом функциональности, вы можете просто изменить существующий код, чтобы проверить, больше ли указанный индекс, чем длина массива.
Поскольку ваш массив является int[]
(а не int?[]
), все допустимые индексы будут иметь значение.Кроме того, мы можем использовать ?.
для обработки случаев, когда сам массив может быть null
:
private static void SomeMethod(int[] array, int index) =>
Console.WriteLine(index >= 0 && index < array?.Length);
Затем используется вместо передачи элемента массива с недопустимым индексом (который всегда выбрасывает* IndexOutOfRangeException
), вы бы передавали сам массив и индекс отдельно:
static void Main()
{
int[] sArray = new int[] { 1, 2, 3 };
SomeMethod(sArray, 0);
SomeMethod(sArray, 1);
SomeMethod(sArray, 2);
SomeMethod(sArray, 3);
SomeMethod(null, 0);
GetKeyFromUser("\nPress any key to exit...");
}
Выход
![enter image description here](https://i.stack.imgur.com/WPFJD.png)