Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю Страница 82

Тут можно читать бесплатно Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю. Жанр: Компьютеры и Интернет / Базы данных. Так же Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте FullBooks.club (Фулбукс) или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних просмотр данного контента СТРОГО ЗАПРЕЩЕН! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту pbn.book@yandex.ru для удаления материала


Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю краткое содержание

Прочтите описание перед тем, как прочитать онлайн книгу «Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю» бесплатно полную версию:

В 10-м издании книги описаны новейшие возможности языка C# 9 и .NET 5 вместе с подробным "закулисным" обсуждением, призванным расширить навыки критического мышления разработчиков, когда речь идет об их ремесле.

Книга охватывает ASP.NET Core, Entity Framework Core и многое другое наряду с последними обновлениями унифицированной платформы .NET, начиная с улучшений показателей производительности настольных приложений Windows в .NET 5 и обновления инструментария XAML и заканчивая расширенным рассмотрением файлов данных и способов обработки данных.

Все примеры кода были переписаны с учетом возможностей последнего выпуска C# 9.

Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю читать онлайн бесплатно

Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю - читать книгу онлайн бесплатно, автор Троелсен Эндрю

            // Логика обработки. ..

        }

    }

    bool IsValid([NotNullWhen(true)] string? line)

    {

        return !string.IsNullOrEmpty(line) && line.Length >= mark.Length;

    }

}

Статические локальные функции (нововведение в версии 8.0)

В версии C# 8 средство локальных функций было усовершенствовано — появилась возможность объявлять локальную функцию как статическую. В предыдущем примере внутри локальной функции Add() производилась прямая ссылка на переменные из главной функции. Результатом могут стать неожиданные побочные эффекты, поскольку локальная функция способна изменять значения этих переменных.

Чтобы увидеть возможные побочные эффекты в действии, создайте новый метод по имени AddWrapperWithSideEffeet() с таким кодом:

static int AddWrapperWithSideEffect(int x, int y)

{

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

  return Add();

  int Add()

  {

    x += 1;

    return x + y;

  }

}

Конечно, приведенный пример настолько прост, что вряд ли что-то подобное встретится в реальном коде. Для предотвращения ошибки подобного рода добавьте к локальной функции модификатор static. Это не позволит локальной функции получать прямой доступ к переменным родительского метода, генерируя на этапе компиляции исключение CS8421, "A static local function cannot contain a reference to ‘<имя переменной>’" (Статическая локальная функция не может содержать ссылку на ‘<имя переменной>’).

Ниже показана усовершенствованная версия предыдущего метода:

static int AddWrapperWithStatic(int x, int y)

{

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

  return Add(x,y);

  static int Add(int x, int y)

  {

    return x + y;

  }

}

Понятие параметров методов

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

Модификаторы параметров для методов

Стандартный способ передачи параметра в функцию — по значению. Попросту говоря, если вы не помечаете аргумент каким-то модификатором параметра, тогда в функцию передается копия данных. Как объясняется далее в главе, то, что в точности копируется, будет зависеть от того, относится параметр к типу значения или к ссылочному типу.

Хотя определение метода в C# выглядит достаточно понятно, с помощью модификаторов, описанных в табл. 4.2, можно управлять способом передачи аргументов методу.

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

Чтобы проиллюстрировать использование перечисленных ключевых слов, создайте новый проект консольного приложения по имени FunWithMethods. А теперь давайте рассмотрим их роль.

Стандартное поведение передачи параметров

Когда параметр не имеет модификатора, поведение для типов значений предусматривает передачу параметра по значению, а для ссылочных типов — по ссылке.

На заметку! Типы значений и ссылочные типы рассматриваются позже в главе.

Стандартное поведение для типов значений

По умолчанию параметр типа значения передается функции по значению. Другими словами, если параметр не помечен каким-либо модификатором, то в функцию передается копия данных. Добавьте в класс Program следующий метод, который оперирует с двумя параметрами числового типа, передаваемыми по значению:

// По умолчанию аргументы типов значений передаются по значению.

static int Add(int x, int y)

{

  int ans = x + y;

  // Вызывающий код не увидит эти изменения,

  // т.к. модифицируется копия исходных данных

  // original data.

  x = 10000;

  y = 88888;

  return ans;

}

Числовые данные относятся к категории типов значений. Следовательно, в случае изменения значений параметров внутри контекста члена вызывающий код будет оставаться в полном неведении об этом, потому что изменения вносятся только в копию первоначальных данных из вызывающего кода:

Console.WriteLine(&quot;***** Fun with Methods *****\n&quot;);

// Передать две переменные по значению.

int x = 9, y = 10;

Console.WriteLine(&quot;Before call: X: {0}, Y: {1}&quot;, x, y);

// Значения перед вызовом

Console.WriteLine(&quot;Answer is: {0}&quot;, Add(x, y));

// Результат сложения

Console.WriteLine(&quot;After call: X: {0}, Y: {1}&quot;, x, y);

// Значения после вызова

Console.ReadLine();

Как видно в показанном далее выводе, значения х и у вполне ожидаемо остаются идентичными до и после вызова метода Add(), поскольку элементы данных передавались по значению. Таким образом, любые изменения параметров, производимые внутри метода Add(), вызывающему коду не видны, т.к. метод Add() оперирует на копии данных.

***** Fun with Methods *****

Перейти на страницу:
Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.
Комментарии / Отзывы
    Ничего не найдено.