Библиотека шарписта | C#, F#, .NET, ASP.NET
22.9K subscribers
2.26K photos
36 videos
85 files
4.43K links
Все самое полезное для C#-разработчика в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/b60af5a4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead
Download Telegram
Программа выведет строку Bob. Переменная Tom хранит ссылку на объект Employee. Переменная Bob после присвоения также хранит эту же ссылку на объект Employee. Поэтому преобразование bob as Employee вернёт объект Employee, который будет присвоен переменной empl.

Поскольку все три переменных (tom, bob и empl) хранят ссылку на один и тот же объект в памяти, то изменение объекта через одну из этих переменных приведет к тому, что другие переменные будут указывать на этот изменённый объект.
👍1
Вероятно каждый веб-разработчик сталкивался с пагинацией (порядковая нумерация страниц) в своей практике, ведь она является одной из самых важных концепций при создании RESTful API. В руководстве подробно и довольно понятно расписан процесс создания ASP.NET Core 3.1 WebApi, который реализует расширенную пагинацию. Читайте статью или сразу в репозиторий.
Статья о поиске сильных и слабых сторон .NET Core и Node.js, которая породила много споров и побудила автора написать новую полноценную статью-продолжение с точки зрения личного опыта и причинно следственных связей.
#вопросы_для_самопроверки

Зачем нужны автосвойства, не проще ли их заменить обычными переменными?
Библиотека шарписта | C#, F#, .NET, ASP.NET pinned «​​Фильм Microsoft Build 2020: главные новинки IT-индустрии Рассказ и видео о последних новинках от компании Microsoft. Суперкомпьютеры, безопасное машинное обучение, Learn TV, Fluid Framework и многое другое – будьте в курсе инноваций! https://proglib.io/sh/RSsI59cBpz»
​​Свойства в C# управляют доступом к полям класса. Если у нас имеется десяток и более полей, то определять каждое поле и писать для него однотипное свойство было бы утомительно. Поэтому в .NET были добавлены автоматические свойства (автосвойства). Сокращенная запись автосвойств прикреплена к посту.

Преимущество автосвойств заключается в том, что при необходимости их можно развернуть в полноценные свойства и через них управлять доступом к переменным. Если бы мы использовали обычные переменные вместо автосвойств, то при необходимости ограничить доступ к переменным нам, возможно, пришлось исправить множество имеющегося кода в программе.
Как безопасно подключаться к API в .NET Core, используя C#? HttpClient — это решение, но как правильно его использовать, чтобы не вызвать дальнейших проблем? Разбираемся: https://proglib.io/w/9cb945fe
В строках 12 и 13 перечислены 2 способа преобразования объекта Person к типу Employee. Какой из них предпочтительнее?
Anonymous Poll
75%
Employee empl1
25%
Employee empl2
Использование оператора as (строка 12) является более предпочтительным, поскольку в случае неудачного преобразования этот оператор возвращает значение null. При доступе к объекту через переменную мы можем проверить её значение на null.

Операция преобразования (строка 13) в случае неудачного преобразования генерирует исключение. Мы можем отлавливать данное исключение через конструкцию try...catch. Однако, как правило, обработка исключений является более затратной операций по сравнению с простой проверкой в блоке if.
Dependency_Injection_Principles,_Practices,_and_Patterns_by_Mark.pdf
14.2 MB
Dependency Injection Principles, Practices, and Patterns (2019)

Автор(ы): Mark Seemann, Steven van Deursen

Книга научит вас использовать внедрение зависимостей (DI, Dependency Injection) для уменьшения жестких зависимостей между компонентами приложения.

Вы изучите основы DI, ознакомитесь с типами приложений, которые от нее выигрывают. Вы поработаете с конкретными сценариями, используя C# и .NET для реализации DI в разных проектах.

Преимещество книги в том, что она учит вас DI с нуля, показывая соответствующие примеры, шаблоны и анти-шаблоны для создания слабосвязанных и грамотно структурированных приложений. Хорошо аннотированный код и диаграммы используют примеры на C# для иллюстрации принципов, которые безупречно работают с современными объектно-ориентированными языками и библиотеками DI.
Статья, в которой объясняется, почему вы должны описывать программное обеспечение по вариантам использования, а не по уровням и структурам, которые оно использует. Погружаемся в принципы чистой архитектуры .Net: https://proglib.io/w/1ff937f9
Актуальный вопрос поднял Николай Балакин на .NET Fest 2019. Действительно, что делать, если всё, что можно уже закэшировано, а код всё ещё тормозит? В своём докладе он приводит примеры работы некоторых низкоуровневых механизмов .NET, а также рассказывает, как с их помощью можно выиграть драгоценные секунды, когда счёт идет на отдельные такты процессора.

https://proglib.io/w/a30b46c9
Привет, Чувак на связи.

Веду канал с вакансиями в IT без херни.

Лично отбираю вакансии - никакой херни.
Вакансии краткие и по делу - никаких полотен в два экрана.
Только две вакансии в день - никакого спама, я уважаю своих читателей.
Все вакансии имеют стандартизированный вид - никакого хаоса.
Заставляю эйчаров переписывать вакансии по 10 раз - никаких дружных коллективов.
Если класс объявлен с модификатором sealed (запечатанный), то от этого класса нельзя наследовать и создавать производные классы.

В следующем примере класс B наследует от класса A, но никакие классы не могут наследовать от класса B:
class A {}
sealed class B : A {}


Модификатор sealed можно использовать для метода или свойства, которое переопределяет виртуальный метод или свойство в базовом классе. Это позволяет классам наследовать от вашего класса, запрещая им при этом переопределять определённые виртуальные методы или свойства.
1