Методы C# могут возвращать какие-либо значения. До сих пор мы использовали в примерах методы, которые не возвращали ничего и использовали в описании специальный тип void
. В этой части мы рассмотрим, как метод может что-либо возвращать и как работать с результатами, возвращаемыми методами в C#.
Учебник C#
Основы работы в C#, начиная с типов данных и, заканчивая разработкой своих небольших приложений в C# и Visual Studio
Методы в C#. Параметры методов
Параметры методов позволяют задать некоторые входные значения для метода. В предыдущей части мы уже затронули тему определения параметров методов в C#, разработав свой собственный метод для вывода разноцветного текста в консоль. Однако, на этом тема использования параметров в методах C# не исчерпывается и сегодня мы более детально рассмотрим использование параметров.
Лабораторная работа по C#. Операции побитового сдвига
Задача: Даны два числа — 16 и 2. Напишите программу на C#, которая, используя операции сдвига влево (<<
), сдвига вправо (>>
), а также сложение или вычитание над представленными числами получает итоговый результат равный 127.
Побитовые операторы и операторы сдвига в C#
Отдельную группу операторов C# составляют побитовые операторы и операторы сдвига. Побитовые операторы и операторы сдвига оперируют разрядами числа. Чтобы разобраться с действием этих операторов, нам необходимо иметь хотя бы начальные знания о двоичной системе счисления, в которой число представляется в виде 0 и 1. Например, число 5 в двоичной системе представляется как 0101, а число 7 — 0111.
Знакомство с Visual Studio Code
Разработка приложений в настоящее время ведется с использованием таких специализированных средств, как IDE (интегрированные среды разработки) и редакторы кода. Выбор того или иного средства разработки зависит в первую очередь от наших предпочтений. Кому-то требуется иметь сразу и всё под рукой — и компилятор, и отладчик, и средства тестирования и рефакторинга, и ещё много всего, что пока может быть вам и не понятно, но разработчику необходимо, а кому-то достаточно текстового редактора с подсветкой синтаксиса и пары инструментов для сборки/отладки. В первом случае, предпочтение будет отдаваться полноценным IDE (нередко — платным), например Visual Studio. Во втором случае — можно обойтись бесплатными инструментами. Одним из наиболее популярных редакторов кода на сегодняшний день является Visual Studio Code, или проще — VS Code. Именно в этом редакторе мы сегодня повторим то, приложение, которое разработали в предыдущей части.
Первое приложение на C#
Итак, в предыдущей части мы познакомились, в общих чертах с платформой .NET и тем, как выполняются приложения, разработанные на языке C#. Теперь попробуем написать наше первое приложение.
Пользовательские конвертеры. Класс JsonConvert
В подавляющем большинстве случаев, сериализатор из System.Text.Json вполне справляется с сериализацией и десериализацией объектов практически любой сложности. Однако, встречаются моменты, когда даже с множество настроек из JsonOptions
не справляются с десериализацией объекта. В этом случае, мы можем написать свои пользовательские конвертеры для класса JsonSerializer
.
EF Core — ошибка «Could not load assembly ‘XXXX’. Ensure it is referenced by the startup project ‘XXXX'»
При попытке создать миграцию в EF Core 7 получил ошибку «Could not load assembly ‘XXXX’. Ensure it is referenced by the startup project ‘XXXX’«. В консоли диспетчера пакетов вывод выглядит следующим образом:
Build started…
Build succeeded.
Could not load assembly ‘XXXX’. Ensure it is referenced by the startup project ‘XXXX’.
Если вы столкнулись с такой же ошибкой, то, возможно, что представленное ниже решение вам поможет.
Parallel LINQ (PLINQ) в C#. Обработка ошибок и отмена запроса (метод WithCancellation)
При выполнении параллельных запросов в PLINQ также могут возникать различные исключения, которые необходимо каким-либо образом обрабатывать. При выполнении параллельных запросов PLINQ разбивает исходную последовательность на части, каждая из которых обрабатывается в отдельном потоке. При этом, если в каких-либо потоках возникают исключения, то все они собираются в одном объекте исключений типа AggregateException
.
Parallel LINQ (PLINQ) в C#. Параметры слияния в PLINQ (методы WithMergeOptions и ForAll)
При параллельном выполнении запроса PLINQ разделяет исходную последовательность на несколько частей, каждая из которых обрабатывается в отдельном потоке. Когда нам необходимо использовать результаты вычислений в главном потоке приложения, например в цикле foreach
, то полученные в каждом потоке результаты объединяются снова в одну последовательность. PLINQ может выполнять разные типы слияния в зависимости от операторов, которые присутствуют в запросе. Для потока ожидающего такой результат может пройти достаточно большой период времени, пока появятся первые результаты полностью буферизованного запроса. Однако, используя различные варианты слияния в PLINQ, в некоторых случаях, мы можем ускорить работу приложения и повысить его производительность.