Izibook.club
Читать онлайн книги!
  • Главная
  • Жанры
  • Авторы
  • ТОП книг
  • ТОП авторов
  • Контакты

Язык программирования C#9 и платформа .NET5

Часть 81 из 642 Информация о книге

На заметку! Модификаторы доступа для методов (и классов) раскрываются в главе 5. Параметры методов рассматриваются в следующем разделе.

До настоящего момента в книге каждый из рассматриваемых методов следовал такому базовому формату:

// Вспомните, что статические методы могут вызываться

// напрямую без создания экземпляра класса,

class Program

{

<b>  // static воэвращаемыйТип ИмяМетода(список параметров)</b>

<b>  // { /* Реализация */ }</b>

  static int Add(int x, int y)

  {

    return x + y;

  }

}

В нескольких последующих главах вы увидите, что методы могут быть реализованы внутри области видимости классов, структур или интерфейсов (нововведение версии C# 8).

Члены, сжатые до выражений

Вы уже знаете о простых методах, возвращающих значения, вроде метода

Add()
. В версии C# 6 появились члены, сжатые до выражений, которые сокращают синтаксис написания однострочных методов. Например, вот как можно переписать метод
Add()
:

static int Add(int x, int y) =&gt; x + y;

Обычно такой прием называют "синтаксическим сахаром", имея в виду, что генерируемый код IL не изменяется по сравнению с первоначальной версией метода. Он является всего лишь другим способом написания метода. Одни находят его более легким для восприятия, другие — нет, так что выбор стиля зависит от ваших персональных предпочтений (или предпочтений команды разработчиков).

На заметку! Не пугайтесь операции

=&gt;
. Это лямбда-операция, которая подробно рассматривается в главе 12, где также объясняется, каким образом работают члены, сжатые до выражений. Пока просто считайте их сокращением при написании однострочных операторов.

Локальные функции (нововведение в версии 7.0, обновление в версии 9.0)

В версии C# 7.0 появилась возможность создавать методы внутри методов, которые официально называются локальными функциями. Локальная функция является функцией, объявленной внутри другой функции, она обязана быть закрытой, в версии C# 8.0 может быть статической (как демонстрируется в следующем разделе) и не поддерживает перегрузку. Локальные функции допускают вложение: внутри одной локальной функции может быть объявлена еще одна локальная функция.

Чтобы взглянуть на средство локальных функций в действии, создайте новый проект консольного приложения по имени

FunWithLocalFunctions
. Предположим, что вы хотите расширить используемый ранее пример с методом
Add()
для включения проверки достоверности входных данных. Задачу можно решить многими способами, простейший из которых предусматривает добавление логики проверки достоверности прямо в сам метод
Add()
. Модифицируйте предыдущий пример следующим образом (логика проверки достоверности представлена комментарием):

static int Add(int x, int y)

{

  // Здесь должна выполняться какая-то проверка достоверности.

  return x + y;

}

Как видите, крупных изменений здесь нет. Есть только комментарий, в котором указано, что реальный код должен что-то делать. А что, если вы хотите отделить фактическую реализацию цели метода (возвращение суммы аргументов) от логики проверки достоверности аргументов? Вы могли бы создать дополнительные методы и вызывать их из метода

Add()
. Но это потребовало бы создания еще одного метода для использования только в методе
Add()
. Такое решение может оказаться излишеством. Локальные функции позволяют сначала выполнять проверку достоверности и затем инкапсулировать реальную цель метода, определенного внутри метода
AddWrapper()
:

static int AddWrapper(int x, int y)

{

  // Здесь должна выполняться какая-то проверка достоверности.

  return Add();

  int Add()

  {

  return x + y;

  }

}

Содержащийся в

AddWrapper()
метод
Add()
можно вызывать лишь из объемлющего метода
AddWrapper()
. Почти наверняка вас интересует, что это вам дало? В приведенном примере мало что (если вообще что-либо). Но если функцию
Add()
нужно вызывать во многих местах метода
AddWrapper()
? И вот теперь вы должны осознать, что наличие локальной функции, не видимой за пределами того места, где она необходима, содействует повторному использованию кода. Вы увидите еще больше преимуществ, обеспечиваемых локальными функциями, когда мы будем рассматривать специальные итераторные методы (в главе 8) и асинхронные методы (в главе 15).

На заметку!

AddWrapper()
является примером локальной функции с вложенной локальной функцией. Вспомните, что функции, объявляемые в операторах верхнего уровня, создаются как локальные функции. Локальная функция
Add()
находится внутри локальной функции
AddWrapper()
. Такая возможность обычно не применяется за рамками учебных примеров, но если вам когда-нибудь понадобятся вложенные локальные функции, то вы знаете, что они поддерживаются в С#.

В версии C# 9.0 локальные функции обновлены, чтобы позволить добавлять атрибуты к самой локальной функции, ее параметрам и параметрам типов, как показано далее в примере (не беспокойтесь об атрибуте

NotNullWhen
, который будет раскрыт позже в главе):

#nullable enable

private static void Process(string?[] lines, string mark)

{

    foreach (var line in lines)

    {

        if (IsValid(line))

        {

Перейти к странице:
Предыдущая страница
Следующая страница
Жанры
  • Военное дело 3
    • Спецслужбы 3
  • Деловая литература 153
    • Банковское дело 2
    • Деловая литература 2
    • Корпоративная культура 9
    • Личные финансы 16
    • Малый бизнес 2
    • Маркетинг, PR, реклама 35
    • О бизнесе популярно 83
    • Отраслевые издания 1
    • Управление, подбор персонала 12
    • Экономика 20
  • Детективы и триллеры 2295
    • Боевики 263
    • Дамский детективный роман 16
    • Детективы 424
    • Иронические детективы 155
    • Исторические детективы 373
    • Классические детективы 177
    • Криминальные детективы 135
    • Крутой детектив 99
    • Маньяки 14
    • Медицинский триллер 2
    • Политические детективы 40
    • Полицейские детективы 201
    • Прочие Детективы 711
    • Техно триллер 3
    • Триллеры 980
    • Шпионские детективы 83
  • Детские 361
    • Детская образовательная литература 13
    • Детская проза 133
    • Детские остросюжетные 49
    • Детские приключения 172
    • Детские стихи 10
    • Детский фольклор 1
    • Книга-игра 1
    • Прочая детская литература 65
  • Детские книги 419
    • Детская фантастика 171
    • Детские детективы 3
    • Книги для подростков 23
    • Сказки 174
  • Документальная литература 715
    • Биографии и мемуары 456
    • Военная документалистика 7
    • Искусство и Дизайн 13
    • Критика 9
    • Научпоп 9
    • Прочая документальная литература 67
    • Публицистика 239
  • Дом и Семья 180
    • Домашние животные 13
    • Здоровье и красота 30
    • Кулинария 27
    • Прочее домоводство 8
    • Развлечения 3
    • Сад и Огород 7
    • Сделай сам 2
    • Спорт 5
    • Хобби и ремесла 7
    • Эротика и секс 90
  • Драматургия 93
    • Драма 90
    • Киносценарии 3
    • Мистерия 1
    • Трагедия 1
  • Жанр не определен 7
    • Разное 7
  • Компьютеры и Интернет 14
    • Базы данных 3
    • Интернет 3
    • Программирование 1
    • Программное обеспечение 1
    • Прочая компьютерная литература 9
  • Любовные романы 24430
    • Исторические любовные романы 854
    • Короткие любовные романы 2322
    • Любовно-фантастические романы 10423
    • Остросюжетные любовные романы 802
    • Порно 78
    • Прочие любовные романы 52
    • Слеш 411
    • Современные любовные романы 10076
    • Фемслеш 42
    • Эротика 5835
  • Научно-образовательная 334
    • Альтернативная медицина 5
    • Астрономия и Космос 7
    • Биология 29
    • Биофизика 2
    • Биохимия 2
    • Ботаника 3
    • Военная история 4
    • Геология и география 2
    • Государство и право 1
    • Детская психология 13
    • Зоология 3
    • Иностранные языки 2
    • Культурология 40
    • Литературоведение 18
    • Медицина 33
    • Обществознание 6
    • Педагогика 18
    • Политика 20
    • Прочая научная литература 55
    • Психотерапия и консультирование 42
    • Религиоведение 7
    • Секс и семейная психология 24
    • Технические науки 4
    • Физика 8
    • Философия 34
    • Химия 3
    • Экология 3
    • Юриспруденция 7
    • Языкознание 16
  • Образование 495
    • Бизнес 45
    • Биография и мемуары 46
    • Здоровье 10
    • История 281
    • Карьера 4
    • Психология 217
  • Поэзия и драматургия 36
    • Басни 2
    • Драматургия 9
    • Лирика 1
    • Поэзия 26
  • Приключения 673
    • Вестерны 14
    • Исторические приключения 360
    • Морские приключения 66
    • Природа и животные 25
    • Прочие приключения 197
    • Путешествия и география 49
  • Проза 2047
    • Антисоветская литература 5
    • Афоризмы 1
    • Военная проза 97
    • Историческая проза 282
    • Классическая проза 121
    • Контркультура 12
    • Магический реализм 78
    • Новелла 13
    • Повесть 24
    • Проза прочее 19
    • Рассказ 69
    • Роман 100
    • Русская классическая проза 71
    • Семейный роман/Семейная сага 3
    • Сентиментальная проза 10
    • Советская классическая проза 43
    • Современная проза 1575
    • Эпистолярная проза 2
    • Эпопея 4
    • Эссе, очерк, этюд, набросок 2
  • Прочее 1368
    • Газеты и журналы 5
    • Изобразительное искусство, фотография 8
    • Кино 10
    • Музыка 9
    • Подростковая литература 6
    • Театр 5
    • Фанфик 1330
  • Религия и духовность 301
    • Астрология 1
    • Буддизм 4
    • Православие 1
    • Прочая религиозная литература 3
    • Религия 22
    • Самосовершенствование 115
    • Хиромантия 1
    • Эзотерика 174
    • Язычество 1
  • Справочная литература 40
    • Прочая справочная литература 3
    • Путеводители 8
    • Руководства 12
    • Справочники 15
    • Энциклопедии 9
  • Старинная литература 115
    • Античная литература 1
    • Древневосточная литература 5
    • Мифы. Легенды. Эпос 30
    • Прочая старинная литература 80
  • Техника 1
    • Автомобили и ПДД 1
  • Фантастика и фентези 25775
    • Альтернативная история 3700
    • Боевая фантастика 4859
    • Героическая фантастика 1361
    • Городское фэнтези 1865
    • Готический роман 12
    • Детективная фантастика 674
    • Ироническая фантастика 99
    • Ироническое фэнтези 80
    • Историческое фэнтези 450
    • Киберпанк 278
    • Космическая фантастика 1622
    • Космоопера 42
    • ЛитРПГ 1248
    • Любовная фантастика 186
    • Любовное фэнтези 115
    • Мистика 462
    • Научная фантастика 810
    • Попаданцы 8543
    • Постапокалипсис 796
    • Сказочная фантастика 25
    • Социально-философская фантастика 452
    • Стимпанк 135
    • Технофэнтези 106
    • Ужасы 103
    • Ужасы и мистика 712
    • Фантастика 254
    • Фантастика: прочее 212
    • Фэнтези 11023
    • Эпическая фантастика 217
    • Юмористическая фантастика 1018
    • Юмористическое фэнтези 1414
  • Фольклор 7
    • Загадки 1
    • Народные сказки 5
    • Фольклор: прочее 2
  • Юмор 176
    • Анекдоты 1
    • Комедии 1
    • Прочий юмор 62
    • Сатира 3
    • Юмористическая проза 110
    • Юмористические стихи 4
Izibook.club

Бесплатная онлайн библиотека для чтения книг без регистрации с телефона или компьютера. У нас собраны последние новинки, мировые бестселлеры книжного мира.

Контакты
  • pereezdsayta@yandex.ru
Информация
  • Карта сайта
© izibook.club, 2026. | Вход
Этот сайт использует cookie для хранения данных. Продолжая пользоваться сайтом, вы даете свое согласие на работу с этими данными в соответствии с нашей политикой конфиденциальности.
Я согласен