C# 7 – Кортежи (обновленный тип Tuple)

C# logo
Одно из улучшений C#7 коснулось работы с кортежами, которые представлены типом Tuple. Ранее их использование было не очень популярно по двум причинам:
  • относительная громоздкость конструкции;
  • низкая читабельность кода из-за стандартных, ни о чем не говорящих имен свойств Item1ItemN.
Зачастую вместо Tuple создавался отдельный класс, что увеличивало объем кода. В других случаях использовались выходные параметры (out), но это делало сами методы неудобными для использования. С# 7 устраняет указанные недостатки. Для примера возьмем код с Tuple и улучшим его:

Читать дальше...

“Незаметное” добавление кэширования

C# logoДостаточно распространена ситуация, когда приложение очень часто запрашивает определенные данные. Например, профиль текущего пользователя. Это может приводить к заметному падению производительности из-за частых обращений к базе данных. В качестве решения можно использовать кэш, который может быть как локальным, так и использовать более оптимальные для данного случая системы хранения данных. Рассмотрим как добавить его незаметно для бизнес-логики приложения при использовании Dependency Injection.

Читать дальше...

C# 6 – Новые возможности

C# logo20 июля состоялся выпуск Visual Studio 2015 в которую входит C# 6. Давайте посмотрим на возможности, которые предоставляет разработчикам новая версия этого языка программирования.

Читать дальше...

Юнит-тесты, internals и Moq

Наверняка многие использовали модификатор internal, чтобы скрыть внутренние объекты от других сборок. Рассмотрим одну интересую особенность использования таких классов в проектах с юнит-тестами.

Читать дальше...

Portable Imaging Library for .NET

Наверное все разработчики хоть раз сталкивались с задачей нарисовать или модифицировать изображение. В WP8 и WPF для решения этой задачи есть класс WriteableBitmap.

Читать дальше...

Еще один аргумент за ConfigureAwait(false) в библиотеках

Как получить блокировку ASP.NET приложения одним вызовом .NET метода? Очень даже просто. Причем, данный способ справедлив также для WPF и WinForms.

Читать дальше...