В задании указано создать 2 класса: в 1-ом создать и проинициализировать массив из 10 элементов типа int, конструктор по умолчанию и индексатор; во 2-ом классе - Main, в котором продемонстрировать ситуацию выхода за границы массива. Перехватить и обработать нужно исключение в индексаторе. Помогите, как перехватить исключение ?
class B
{
private int[] a = new int[10] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
public int this[int i]
{
get { if (i >= 0 && i <= 10) return a[i]; else throw new IndexOutOfRangeException(); }
set { if (i >= 0 && i <= 10) a[i] = value; else throw new IndexOutOfRangeException(); }
}
}
class MainClass
{
public static void Main(string[] args)
{
B bi = new B();
for (int i = 0; i <= 10; i++)
{Console.WriteLine(bi[i]);}
}
}
get
{
try
{
return a[i];
}
catch(IndexOutOfRangeException ex)
{
// handle exception
return 0;
}
}
Ну, если нужно так "Перехватить и обработать нужно исключение в индексаторе.", то тогда можно так:
class ThingIndexer
{
private string[] _words;
//ctor
public ThingIndexer()
{
_words = new string[] { "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять", "десять" };
}
public string this[int index]
{
get
{
try
{
return _words[index];
}
catch (IndexOutOfRangeException)
{
return "Ошибка в индексе";
}
}
}
}
class MainClass
{
private int _start;
private int _end;
//ctor
public MainClass(int start = 0, int end = 1)
{
_start = start;
_end = end;
}
public IEnumerable<string> GetNumbers()
{
ThingIndexer tIndexer = new ThingIndexer();
for (int i = _start; i < _end; i++)
{
yield return tIndexer[i];
}
}
}
class Program
{
static void Main(string[] args)
{
MainClass mc = new MainClass(4, 15);
foreach (var item in mc.GetNumbers())
{
Console.WriteLine(item);
}
Console.ReadKey();
}
}
В результате получим:
пять шесть семь восемь девять десять Ошибка в индексе Ошибка в индексе Ошибка в индексе Ошибка в индексе Ошибка в индексе
P.S для вашего случая: ...проинициализировать массив из 10 элементов типа int,... нужно переделать совсем немного :)
Только учусь программированию и столкнулся с вот такой проблемой:
Добрый деньЯ реализовывал шифрование в лабораторной работе на языке c# методом гаммирования, в моей реализации значения складываются по модулю...
Возникла проблема с функцией "Random"Иногда не выводит результат
Как програмно прокрутить ScroolBar в ListBox в конец списка