Асинхронный обмен данными по сети в C# по протоколу TCP (делаем сервер асинхронным)

Среди главных проблем с которой можно столкнуться при обмене данными по сети, это длительное ожидание ответа сервера или «зависание» серверной части в бесконечном цикле при ожидании запроса от клиента. В этой статье мы будем решать вторую проблему путём превращения «обычного» сервера, который был написан в одной из предыдущих статей [1]

Запускаем консольное приложение и получаем его вывод на примере сборки решения (C#)

При помощи .NET можно не только запустить консольное приложение, но и получить результат его работы (вывод). Рассмотрим, как это можно сделать на примере консольной сборки решения Visual Studio.

Ввод денежной суммы в два поля (Windows Forms)

Иногда в работе приходится сталкиваться с не совсем тривиальной постановкой тривиальных задач. Например, ввести денежную сумму в два поля. То есть, рубли и копейки вводятся в разные поля. Рассмотрим, как можно решить данную задачу в рамках Windows Forms.

Заполняем базу данных начальными значениями в миграциях (EntityFramework Core (Code First))

При работе с базами данных нередко возникает необходимость заполнить те или иные таблицы начальными значениями. Штатный механизм миграций в EntityFramework Core позволяет это сделать.

Методы расширения в C# (на примере string)

В C# не всегда можно расширить функционал класса путём наследования, т.к. существуют так называемые sealed классы, для которых оно запрещено. Также не всегда есть возможность доработать класс «под себя», т.к. нет доступа к исходному коду. Поэтому, если такой класс всё-таки нуждается в изменении программист вынужден использовать «обходные пути» в виде