«Решайте примеры, используя индексы и свойства»
Download 52.88 Kb.
|
- Bu sahifa navigatsiya:
- Пример использования 3
- Отказоустойчивость
Пример 3В этом примере объявляется класс, в котором хранятся названия дней недели с использованием перечисления System.DayOfWeek. Метод доступа get принимает название дня (DayOfWeek) в виде строкового значения и возвращает соответствующее целое число. Например, для DayOfWeek.Sunday возвращается 0, для DayOfWeek.Monday — 1 и т. д. using System; using Day = System.DayOfWeek; class DayOfWeekCollection { Day[] days = { Day.Sunday, Day.Monday, Day.Tuesday, Day.Wednesday, Day.Thursday, Day.Friday, Day.Saturday }; // Indexer with only a get accessor with the expression-bodied definition: public int this[Day day] => FindDayIndex(day); private int FindDayIndex(Day day) { for (int j = 0; j < days.Length; j++) { if (days[j] == day) { return j; } } throw new ArgumentOutOfRangeException( nameof(day), $"Day {day} is not supported.\nDay input must be a defined System.DayOfWeek value."); } } Пример использования 3using System; class Program { static void Main() { var week = new DayOfWeekCollection(); Console.WriteLine(week[DayOfWeek.Friday]); try { Console.WriteLine(week[(DayOfWeek)43]); } catch (ArgumentOutOfRangeException e) { Console.WriteLine($"Not supported input: {e.Message}"); } } // Output: // 5 // Not supported input: Day 43 is not supported. // Day input must be a defined System.DayOfWeek value. (Parameter 'day') } ОтказоустойчивостьПовысить безопасность и надежность индексаторов можно двумя способами: Реализуйте стратегию обработки ошибок, предусматривающую действия в ситуациях, когда из клиентского кода передается недопустимое значение индекса. В первом примере из этого раздела класс TempRecord содержит свойство Length, с помощью которого клиентский код проверяет введенное значение, прежде чем передать его в индексатор. Кроме того, код обработки ошибок можно поместить в сам индексатор. Не забудьте задокументировать исключения, которые будут вызываться в методе доступа индексатора, для других пользователей. Настройте максимально ограничивающие уровни доступа для методов доступа get и set. Особенно важно сделать это для метода доступа set. Дополнительные сведения см. в разделе Доступность методов доступа. Download 52.88 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling