Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
На заметку! Модификаторы доступа для методов (и классов) раскрываются в главе 5. Параметры методов рассматриваются в следующем разделе.
До настоящего момента в книге каждый из рассматриваемых методов следовал такому базовому формату:
// Вспомните, что статические методы могут вызываться// напрямую без создания экземпляра класса,class Program{<b> // static воэвращаемыйТип ИмяМетода(список параметров)</b><b> // { /* Реализация */ }</b> static int Add(int x, int y) { return x + y; }}В нескольких последующих главах вы увидите, что методы могут быть реализованы внутри области видимости классов, структур или интерфейсов (нововведение версии C# 8).
Члены, сжатые до выражений
Вы уже знаете о простых методах, возвращающих значения, вроде метода
Add()Add()static int Add(int x, int y) => x + y;Обычно такой прием называют "синтаксическим сахаром", имея в виду, что генерируемый код IL не изменяется по сравнению с первоначальной версией метода. Он является всего лишь другим способом написания метода. Одни находят его более легким для восприятия, другие — нет, так что выбор стиля зависит от ваших персональных предпочтений (или предпочтений команды разработчиков).
На заметку! Не пугайтесь операции
=>Локальные функции (нововведение в версии 7.0, обновление в версии 9.0)
В версии C# 7.0 появилась возможность создавать методы внутри методов, которые официально называются локальными функциями. Локальная функция является функцией, объявленной внутри другой функции, она обязана быть закрытой, в версии C# 8.0 может быть статической (как демонстрируется в следующем разделе) и не поддерживает перегрузку. Локальные функции допускают вложение: внутри одной локальной функции может быть объявлена еще одна локальная функция.
Чтобы взглянуть на средство локальных функций в действии, создайте новый проект консольного приложения по имени
FunWithLocalFunctionsAdd()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()На заметку!
AddWrapper()Add()AddWrapper()В версии C# 9.0 локальные функции обновлены, чтобы позволить добавлять атрибуты к самой локальной функции, ее параметрам и параметрам типов, как показано далее в примере (не беспокойтесь об атрибуте
NotNullWhen#nullable enableprivate static void Process(string?[] lines, string mark){ foreach (var line in lines) { if (IsValid(line)) {Похожие книги на "Язык программирования C#9 и платформа .NET5", Троелсен Эндрю
Троелсен Эндрю читать все книги автора по порядку
Троелсен Эндрю - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки mir-knigi.info.