Библиотека шарписта | 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
Весь мир на удаленке, заработки в офлайне просели – нельзя полагаться на один источник дохода. Бывшие офисные сотрудники штудируют курсы и уходят во фриланс за онлайн-заказами. Преимущества очевидны:

💎 Зарплату определяют нагрузка и опыт, а не мнение начальника
🌐 Международный рынок: больше вариантов, оплата в валюте
🌊 Сам выбираешь, когда трудиться и отдыхать

Но работа во фрилансе отличается от офисной. Учиться лучше у людей с опытом – на GeekBrains freelance. Курсы по тестированию, верстке, мобильной разработке и вебу – все с акцентом на быстрый старт во фрилансе. Делимся ссылкой: https://proglib.io/w/5d8dce59
Действительно, на экран будет выведено Bar.Quux(object) и Baz.Quux(params T[]).

Есть такое правило: если при вызове некоторого метода в «текущем» классе находится подходящая сигнатура, то компилятор не будет даже смотреть на родительские классы. В данной задаче классы Bar и Baz имеют собственные версии метода Quux. Их сигнатуры подходят под передаваемый набор параметров, а значит они и будут вызваны, а перегруженный Quux базового класса будет проигнорирован.

Источник: «Задачник.NET» Андрея Акиньшина
Практическая причина, почему стоит выбрать ORM вместо сырого ADO.NET: https://proglib.io/w/6b223eff
Автор статьи приводит множество примеров рефакторинга из реальной (некорректной) кодовой базы с подробным объяснением и иллюстрациями: https://proglib.io/w/bae12d80
В связи с тем, что переменная s не инициализирована, такая программа не скомпилируется.

Программа заработает в случае, если переменной s будет присвоено хоть какое-то значение, например:

string s = ""; 
s += "string"; 

Источник: http://www.quizful.net/test/c_sharp_basic
Можете однозначно утверждать, что C# медленнее, чем C++? Автор статьи, будучи младшим разработчиком, был уверен, что ответ будет «Да, определенно». С опытом пришло понимание, что этот вопрос не очевиден и довольно сложен. Разбираемся: https://proglib.io/w/58fadd15
Задача «Linq:QueryAfterRemove». Что выведет программа?
Anonymous Quiz
47%
1
9%
3
37%
2
7%
Нет правильного ответа
При вызове list.Where(c => c.StartsWith("B")) запрос будет только построен, но не выполнен. Реальное выполнение начнётся в момент вызова query.Count(). К этому моменту значение list будет {"Foo","Baz"}, следовательно будет найден только один элемент, начинающийся с ’B’.

Источник: «Задачник.NET» Андрея Акиньшина
Builder pattern generator

В ходе работы с большими кодовыми базами может возникнуть потребность в использовании шаблонов для создания интуитивно понятного для использования, простого для чтения и структурированного кода. Проект нацелен на помощь в этом и позволяет генерировать исходный код .NET 5 для автоматического создания шаблона компоновщика для классов.

Статья
Репозиторий
​​«Цифровой прорыв» 2020 открывает прием заявок на масштабный IT-марафон с призовым фондом 5.000.000 руб.! ⚡️

В режиме онлайн ты сможешь реализовать свою идею, создать действительно классный продукт, который будет менять жизни людей. 🚀

💥 Регистрируйся по ссылке: https://proglib.io/w/8635767e

Тебя ждут два онлайн-хакатона, которые пройдут 5-7 июня и 19-21 июня. 👨🏻‍💻👩🏼‍💻

- 36 часов кодинга/400 команд;
- Крутые кейсовые задания от Росатома, Сбербанка, Глобального русскоговорящего технологического сообщества Rutech;
- Образовательная программа;
- Трекеры и эксперты , которые будут помогать тебе на каждом этапе.

🌏 25 июня - 25 июля состоится онлайн-чемпионат на технологической платформе Mail.ru:

- Индивидуальное участие;
- Задачи по Machine Learning и Data Science;
- Возможность попасть на финал Цифрового Прорыва!

🎯 Проверь свои силы и разработай крутой проект для решения реальных бизнес-задач, регистрируйся по ссылке: https://proglib.io/w/8635767e
C# позволяет писать код на основе позиционного или номинального стиля. Позиционный стиль позволяет использовать конструкторы.

Объект инициализатора относится к номинальной категории. До сих пор номинальная категория была ограничена, так как требовала доступных для записи свойств.

Это может измениться в C# 9. Разбираемся: https://proglib.io/w/07738350
Строчки
var numbers = GetSmallNumbers();
var evenNumbers = numbers.Select(n => n*2);

строят запрос, но не исполняют его.

Логика GetSmallNumbers() начнёт исполняться при первом вызове метода MoveNext(), который соответствует вызову evenNumbers.FirstOrDefault(). В этот момент и произойдёт Exception.

Источник: «Задачник.NET» Андрея Акиньшина
Ты системный администратор или умеешь кодить?
Приглашаем на бесплатный технический тренинг по внедрению и поддержке интернационализированных почтовых адресов.

Мероприятие проведет Игорь Лидин, ведущий разработчик ТЦИ и эксперт в вопросах внедрения интернационализированной почты.

https://runet-id.com/event/eai-online2020/
ASP.NET_Roadmap.png
550 KB
Карта знаний ASP.Net Core разработчика

Другой вариант карты ранее публиковался на канале. На всякий случай оставим здесь ссылку на соответствующий репозиторий: https://proglib.io/w/8547d67e