Результати пошуку
ITVDN: курси програмування
Відеокурси з
програмування
Підписка

300+ курсів за популярними IT-напрямками

Вибери свою IT спеціальність

Підписка
Підписка

300+ курсів за популярними IT-напрямками

Результати пошуку за запитом: c
Technical skills марафон

Автор: Редакция ITVDN

Подтверди свои навыки и выиграй подписку ITVDN на 3 месяца! C 10 до 20 ноября 2017 года на ITVDN проходит большой марафон среди начинающих программистов. Задача участников марафона - успешно (на 100%) и с максимальными баллами выполнить все задания практикума по одной или нескольким технологиям -  JavaScript, SQL, C# или HTML. Победителей и призов будет много! Условия акции: В период с 10 по 20 ноября 2017 года проверь свои знания, выполнив все задания на Тренажере ITVDN по одной или нескольким технологиям. Чем больше технологий ты знаешь, тем больше призов можешь выиграть. Соревнование проводится в 5 номинациях: JavaScript SQL HTML, CSS C# Starter С# Essential Призы победителям В каждой номинации будет разыграна 1 подписка ITVDN на 3 месяца и 5 подписок на месяц. В пакете подписки полный доступ ко всем видео курсам, представленным в Каталоге ITVDN. В розыгрыше примут участие те, кто выполнит все задания соответствующего практикума на 100%. Супер-приз  - фирменная футболка и брендированная дженга ITVDN – достанется тому, кто за время акции пройдет все практикумы с максимальными баллами. Определение и награждение победителей Победители будут определены с помощью сервиса random.org. Трансляцию розыгрыша смотрите в прямом эфире на нашем YouTube канале 21 ноября в 17:00. Итоги акции будут опубликованы на нашем сайте 21 ноября 2017 года после 18:00.
До Дня Студента – відеокурси у подарунок

Автор: Редакция ITVDN

Друзі, привіт! 17-го листопада  -  День студента! 🎉✨🎁 Ми вітаємо усіх, хто зараз «гризе граніт науки». Бажаємо вам крутих викладачів, легких іспитів і заліків та цікавого студентського життяІ 🎁Подарунок Ми даруємо студентам наш найкращий контент – нові українські відеокурси з програмування, тестування, веб-дизайну та інших технологій! Обирайте, що вас цікавить, і вчіться безкоштовно. Ви можете обрати один із курсів: ✅ FrontEnd + Node.js HTML5 & CSS3 Стартовий CSS Flexbox. Верстання на Grid. Практичний курс з верстки лендінгу Bootstrap 5. Шаблонізатор Pug. JavaScript Стартовий. JavaScript Базовий JavaScript Поглиблений JavaScript Шаблони Асинхронне програмування у JavaScript. TypeScript. React Базовий. React Поглиблений. Vue.js Стартовий. Angular Базовий. Тестування Angular додатків Node.js Базовий. ✅ Java Основи IntelliJ IDEA Java Стартовий. Java Базовий Java Поглиблений. SOLID принципи в Java. MySQL Базовий. JDBC & Hibernate Unit-тестування в Java з JUnit Основи Java EE Spring. Spring MVC. Spring Data. Spring Security. Створення застосунків за допомогою Spring Data Асинхронне програмування на Java ✅ .NET C# Стартовий. SQL Базовий. C# Асинхронне програмування. Універсальні шаблони C#. Unit-тестування у C#. Породжуючі патерни проєктування. Структурні патерни проєктування мовою C#. Алгоритми та структури даних мовою C# Entity Framework Core Базовий ASP.NET Core Базовий ✅ Python Python Стартовий. Python Базовий. Python Базовий 2025 Flask. Породжуючі патерни проєктування на Python ✅ Інше Основи використання Git PostgreSQL. Основи адміністрування Windows Server. Docker. React Native. Unity Стартовий. Android Базовий. PL/SQL. Unit-тестування в PHP. Як отримати доступ Потрібно бути зареєстрованим користувачем ITVDN. Заповнити заявку та вказати в ній, який курс Ви бажаєте отримати. Акція тільки для студентів ВНЗ. Заявки приймаються до 12:00 18-го листопада, а доступ до обраного вами курсу буде відкрито в цей же день до 18:00 на 10 днів. Оформити заявку Що ви отримаєте: Доступ до усіх відео уроків обраного курсу на 10 днів Матеріали уроків – опорні конспекти, презентації Вихідний код навчальних проєктів Практичні завдання Онлайн тестування Після закінчення курсу отримати Сертифікат. Поділися інформацією з друзями! І навчайтеся на ITVDN разом  💛💙
🎁 Акція «10 днів безкоштовного навчання»

Автор: Редакция ITVDN

Хочеш спробувати навчання на ITVDN та відчути, як працює платформа зсередини? З 28 серпня по 5 вересня у тебе є унікальна можливість отримати безкоштовний доступ на 10 днів до одного з курсів на вибір. Це чудовий шанс: протестувати формат навчання, оцінити якість матеріалів і викладання, пройти реальний курс і зрозуміти, чи підходить тобі напрям. Наразі ви можете безкоштовно вивчати на ITVDN такі українськомовні курси: ✅ FrontEnd + Node.js HTML5 & CSS3 Стартовий CSS Flexbox. Верстання на Grid. Практичний курс з верстки лендінгу Bootstrap 5. Шаблонізатор Pug. JavaScript Стартовий. JavaScript Базовий JavaScript Шаблони Асинхронне програмування у JavaScript. TypeScript. React Базовий. React Поглиблений. Vue.js Стартовий. Angular Базовий. Тестування Angular додатків Node.js Базовий. ✅ Java Основи IntelliJ IDEA Java Стартовий. Java Базовий Java Поглиблений. SOLID принципи в Java. MySQL Базовий. JDBC & Hibernate Unit-тестування в Java з JUnit Основи Java EE Spring. Spring MVC. Spring Data. Spring Security. Створення застосунків за допомогою Spring Data Асинхронне програмування на Java ✅ .NET C# Стартовий. SQL Базовий. C# Асинхронне програмування. Універсальні шаблони C#. Unit-тестування у C#. Породжуючі патерни проєктування. Структурні патерни проєктування мовою C#. Алгоритми та структури даних мовою C# Entity Framework Core Базовий ASP.NET Core Базовий ✅ Python Python Стартовий. Python Базовий. Python Базовий Flask. Породжуючі патерни проєктування на Python ✅ Інше Основи використання Git PostgreSQL. Основи адміністрування Windows Server. Docker. React Native. Unity Стартовий. Android Базовий. PL/SQL. Unit-тестування в PHP. Триває процес публікації нових курсів: HTML5 & CSS3 Базовий Transact-SQL JavaScript Патерни Проєктування Створення проєкту на Python і Django Entity Framework 6 📝 Як взяти участь? Щоб отримати доступ, потрібно виконати кілька простих кроків:  1️⃣ Зареєструватися на сайті ITVDN.  2️⃣ Підпишись на наші соціальні мережі - YouTube, Telegram, Instagram та зробити репост допису.  3️⃣ Обрати для себе 1 відеокурс.  4️⃣ Заповнити заявку учасника акції. 📅 Заявки приймаються з 28 серпня до 5 вересня включно. Доступ до обраного курсу буде відкриватись з 2 по 7 вересня. Тривалість доступу — 10 днів з моменту відкриття.
ТОП-10 найкращих відео з .NET

Автор: Влад Сверчков

Вітаємо! Друзі, цього разу ми підготували для вас вибірку найкращих вебінарів від ITVDN за напрямком .NET. До рейтингу увійшли як пізнавальні вебінари з актуальною інформацією, так і вебінари, орієнтовані на прокачування ваших навичок створення коду. Давайте приступимо до їх розгляду. Як стати C# розробником у 2021 році? .NET чи .NET Core? Автор – Дмитро Охріменко, сертифікований спеціаліст Microsoft (MCTS, MCPD, MCT). Тренер-консультант, експерт з побудови розподілених та веб-орієнтованих додатків. Автор курсів з .NET та FrontEnd розроблення на ITVDN C#/.NET розроблення – це дуже перспективний напрямок у IT, життя якому дала всесвітньо відома компанія MIcrosoft. Якщо вам цікава дана сфера і ви хочете зробити в ній професійний старт, цей вебінар буде для вас дуже доречним! Мета вебінару – допомогти вам розібратися з головними аспектами даної спеціальності, спираючись на тенденції розвитку IT-ринку, правильно розставити пріоритети та допомогти спланувати ваше навчання та кар'єру за напрямком C#/.NET. На заході розглянуто такі важливі питання: Чи є сенс починати вчити C# у 2021 році? Що таке .NET Framework та що таке .NET Core? Що вивчати і в якій послідовності? Карта спеціальності Порівняння веб програми на .NET та на .NET Core Корисні ресурси для навчання та розвитку Питання та відповіді Як стати Full-Stack розробником? Автор – Віталій Ємець, FullStack Developer, Microsoft Certified Specialist Full-stack розробник (вимовляється "фул стек") – це майстер на всі руки у світі веб-розроблення. Йому під силу реалізувати як клієнтський, так і серверний бік додатку, якими зазвичай займаються FrontEnd і BackEnd розробники окремо один від одного. Таким чином, у деяких випадках Full-Stack фахівець може навіть одноосібно вести проєкт від початку до кінця. Які навички необхідно мати, щоб досягти такого рівня майстерності, і який інструментарій повинен бути у справжнього Full-Stack розробника? У чому переваги даної професії та які у неї підводні камені? Як Full-Stack розроблення пов'язане з технологіями C#/.NET? Усі відповіді на ваші запитання ви отримаєте на вебінарі Віталія Ємця. Що нового в C# 8, 9? Автор – Олексій Никифоров, Software Engineer & Business Analyst at HYS-Enterprise C# — це універсальна об'єктно-орієнтована мова, яка є потужним інструментом створення програмного забезпечення з широкою сферою застосування. При такій високій функціональності вона досить нескладна у вивченні і чудово підходить тим, хто збирається зробити перший крок назустріч програмуванню. Цей вебінар передбачає занурення в останні нововведення мови C#. Основний наголос буде зроблено на комунікацію та обговорення, припускаючи, що учасники вебінару – розробники C#, які стежать за новинками цієї мови. Автор пройдеться новими можливостями мови та обговорить, як ці зміни можуть бути використані з метою написання більш виразного та чистого коду. Алгоритми та структури даних у .NET Автор – Ярослав Кучук, .NET Developer На вебінарі розглядається питання фундаментальної алгоритмічної підготовки – від математичного обґрунтування потужності алгоритму до стандартних алгоритмів та структур даних. Базові алгоритми реалізовані на C#; автор аналізує їх з точки зору їхньої потужності. На вебінарі розглядаються такі теми: Поняття алгоритму Складність алгоритму та способи її вимірювання Основні структури даних Стек Черга Зв'язаний список Хеш-таблиця Бінарні дерева пошуку Червоно-чорні дерева Базові сортувальні алгоритми Базові пошукові алгоритми   Безпека .NET веб-додатків: часті помилки та методи боротьби з ними Автор – Олексій Голубєв, Lead Software Engineer в компанії SoftServe Мета вебінару – звернути увагу розробників на проблеми у сфері безпеки веб-додатків, які можна усунути ще на етапі розроблення. На вебінарі автор розповідає про найчастіші помилки у додатках, вразливостях, пов'язаних із сторонніми бібліотеками, і те, як їх можна уникнути. Зміст вебінару: Авторизація. Крадіжки сесій та стійкості паролів. Людський фактор. Що розробник може зробити не так і на що звертати увагу. Ін'єкції. Які зустрічаються частіше і про небезпечні WYSIWYG редактори. Рандомізація. Випадковості не випадкові. Вебінар підійде .NET розробникам – вітаються спеціалісти будь-якого рівня. Буде багато практичної інформації, яку можна застосувати як на етапі розроблення, так і на етапі проєктування систем. 6. Техніки тестування для C# розробників. Рівень Advanced Автор – Юрій Наурінський, Senior Fullstack .NET Software Developer На вебінарі буде розглянуто 3 «поглиблені» техніки тестування, якими має володіти досвідчений розробник. Буде трохи теорії, приклади та відповіді на запитання. Усі приклади мовою С#. Нижче наведено техніки, які розглядаються на зустрічі. Property based testing – техніка тестування, що застосовується для перевірки властивостей функції, програми, системи. Ключова ідея в тому, що описуються не заздалегідь задані очікувані значення, а властивості, яким повинні задовольняти тестові приклади. Далі, тестові приклади генеруються випадковим чином, постійно перевіряючи, чи вони задовольняють вищеописаним властивостям. Performance testing – одна з найважливіших технік тестування, яку бажано знати кожному розробнику, котра використовується для відповіді на питання, наскільки швидко працює функція, програма, система, а також її окремі компоненти. Також, може відповідати на питання скільки пам'яті споживає функція, програма, система. Load testing – техніка тестування, про яку бажано мати уявлення кожному веб-розробнику; застосовується для вимірювання поведінки системи під різним навантаженням, зокрема нормальним та піковим. Можуть вимірюватися час відповіді, пропускна спроможність, інші бізнес-орієнтовані метрики. 7. Docker для .NET розробників Автор – Олексій Никифоров, Software Engineer & Business Analyst at HYS-Enterprise Docker – це популярна платформа, яка використовується при розробленні, тестуванні та розгортанні програмного забезпечення. Вона дозволяє скоротити час між написанням коду та доставленням його на “production”. За останні роки популярність Docker'a сильно зросла, і ця технологія стала індустріальним стандартом у сфері контейнеризації програмних рішень. Docker може бути корисним дуже широкому спектру фахівців: розробник, тестувальник, адміністратор, реліз-менеджер і т. д. Незважаючи на те, що Docker написаний на Go і використовує особливості ядра Linux, .NET розробники, які традиційно ведуть розроблення під Windows, можуть отримати величезну користь від використання Docker'a на різних рівнях. Знання даного інструменту підвищить вашу продуктивність та дасть конкурентну перевагу на ринку праці. Вебінар буде корисним фахівцям початкового рівня, які завжди хотіли спробувати Docker. Ознайомлення буде засноване на програмі .NET Core. За завершенням, ви сміливо орієнтуватиметеся в основних концепціях та інструментах і зможете успішно розпочати свій шлях вивчення Docker'а. 8. F# та функціональне програмування для C# розробників Автор – Альберт Ташу, .NET Developer, тренер-консультант навчального центру CyberBionic Systematics, а також сертифікований спеціаліст Microsoft С# – це мультипарадигменна мова, і з кожним релізом вона набуває все більше можливостей, спрямованих на застосування функціонального програмування, яке є однією з найпопулярніших парадигм у сучасном розробленні програмного забезпечення. Для того, щоб легше було розібратися в цій парадигмі, буде розглянута дуже цікава мова платформи .NET – F#. Крім цього, торкнемося основних принципів функціонального програмування та їх застосування при розробленні мовою C#. Зміст вебінару: Введення до мови F# Основи функціонального програмування Застосування функціональних підходів розроблення на C# Рефакторинг проєкту на С# 9. Створення гри "Space Invaders" на C# з нуля Автор – Армен Маілян, C#/.NET Developer, тренер-консультант CyberBionic Systematics Який найкращий спосіб вивчити щось нове? Звичайно ж, перетворити це на гру! Цей спосіб гарний і у навчанні програмуванню. Почніть вивчення мови C#, створивши консольну комп'ютерну гру. Обіцяємо мінімум нудної теорії та максимум практики. Буде цікаво! Кому це буде корисно? Новачкам. Ніколи не програмували? Це не нагода відмовлятися від нового крутого досвіду. Ви маєте шанс зробити свою власну гру на C# і отримати досвід практичного застосування даної мови програмування, а також спробувати себе в ролі розробника ігор. Розробникам-початківцям C#. Ви зможете поглибити та застосувати на практиці свої знання мови C# разом із наставником. Чого ви навчитеся: Розробляти просту гру мовою C#. Розбивати велике завдання на окремі етапи та послідовно їх реалізовувати. Застосовувати на практиці процедурний і об’єктно-орієнтований підхід для написання програм на С#. Розуміти та застосовувати основи алгоритмування. Застосовувати знання основ ООП для створення повноцінної програми. Використовувати функціонал .NET Framework. 10. Створення еволюційної гри Conway's Game Of Life C# + WPF Автор – Юрій Наурінський, Senior Fullstack .NET Software Developer На вебінарі буде розглянутий Game Of Life – клітинний автомат, придуманий англійським математиком Джоном Конвеєм у 1970 році – і його реалізація за допомогою мови програмування C# та фреймворку WPF. Перш ніж реалізовувати гру, необхідно чітко визначити завдання та постановку правил самої гри. Далі буде розглянуто, як реалізувати саму логіку гри без прив'язки до будь-якого фреймворку. Наступний логічний крок після того, як було реалізовано основну логіку гри — це розгляд прив'язки логіки до фреймворку WPF і надання «життя» грі. Наприкінці вебінару автор розповість, які техніки тестування можна застосувати для гарантії коректності результату логіки гри. Цей вебінар буде цікавий C# розробникам, які бажають заглибитись у розроблення додатків з використанням технології WPF, а також хочуть розглянути з практичної точки зору досить цікаву та відому математичну гру.   Вивчайте розроблення .NET на ITVDN!
Підсумки третього туру Шахової IT Арени для програмістів

Автор: Євген Волосатов

Состоялся третий тур Шахматной IT Арены. Задания можно было решать на одном из 5 языков программирования -  Python, C#, Java, C++ или Pascal. Мы поздравляем победителей, которые набрали максимальное количество баллов за решение всех задач третьего тура. Смотрите видео итогов третьего тура и разбор задач. Имена победителей: Artyko Владимир Шустов Богдан Зарицкий Олег Деміхов Maksym Sukhorukov Победители получат в подарок подписку ITVDN сроком на 3 месяца. Также ТОП – 7  участников турнира, которые выполнили все задания третьего тура и получают в подарок один видео курс на свой выбор: Artyko Владимир Шустов Богдан Зарицкий Олег Деміхов Maksym Sukhorukov Ekaterina Zapryagaeva Александр Восколуп (получает 2 курса, так как решил задания на Java и на Python) Поздравляем победителей!
Підсумки другого туру Шахової IT Арени для програмістів

Автор: Редакция ITVDN

Состоялся второй тур Шахматной IT Арены. Задания можно было решать на одном из 5 языков программирования -  Python, C#, Java, C++ или Pascal. Мы поздравляем победителей, которые набрали максимальное количество баллов за решение всех задач второго тура. Смотрите видео итогов второго тура и разбор задач. Имена победителей: Богдан Зарицкий Maksym Sukhorukov Artyko Победители получат в подарок подписку ITVDN сроком на 3 месяца. Также ТОП – 15 участников турнира, которые выполнили все задания второго тура и получают в подарок один видео курс на свой выбор: Богдан Зарицкий Maksym Sukhorukov Artyko Олег Деміхов Ekaterina Zapryagaeva Александр Восколуп Владимир Шустов Владислав Воросалов Александр Восколуп Alexander Stepanenko Константин Падалкин Олег Петровский Дмитрий Липлявкин Роман Брага Михаил Если Вы хотите принять участие в Шахматной IT арене, регистрируйтесь и решайте задачи третьего тура. Решения принимаются до 12:00 30 июня 2019 года.
ITVDN представляє новий відеокурс "Елементи математичної логіки". Усього 2 USD!

Автор: Редакция ITVDN

В любой человеческой деятельности необходимо умение правильно рассуждать, а особенно в программировании. Данный курс является введением в классическую логику. Рассматриваются такие понятия как высказывание, суждение и силлогизм. Также в курсе рассматриваются основы элементарной математической логики, они будут полезны начинающим программистам. Базовые логические функции представлены в языке C# в виде отдельных операторов языка и часто используются программистами. Автор курса “Элементы математической логики” - Александр Шевчук сертифицированный специалист Microsoft (MCTS, MCPD, MCT), эксперт в области построения архитектуры информационных систем, бизнес-анализа и управления IT проектами. Данный курс будет полезен программистам, использующим язык C#. По завершении курса Вы поймете и научитесь использовать базовые логические функции. Видеокурс “Элементы математической логики” доступен по цене 2.00$ за подписку на 30 дней. Для того, чтобы получить доступ к курсу Вы можете пройти по ссылке http://itvdn.com/ru/video/math-logic
Розробка парсерів за допомогою ANTLR

Автор: Володимир Кожаєв

<p>На этом вебинаре мы погрузимся в методологию разработки парсеров и их внутреннего устройства на примере ANTLR.</p> <p><strong>План вебинара:</strong></p> <ol> <li>Парсеры, что это и зачем они нужны.</li> <li>ANTLR - стандарт в мире генераторов парсеров.</li> <li>Внутреннее устройство ANTLR.</li> <li>Обзор средств разработки.</li> <li>Практический пример.</li> <li>Ответы на вопросы.</li> </ol> <p><strong>Целевая аудитория:</strong> Тема будет интересна для всех, кто хочет узнать больше о разработке парсеров и лучшем из имеющихся средств для их генерации -&nbsp; ANTLR</p> <p><strong>Предварительны требования:</strong> &nbsp;Твёрдые знания любого из следующих языков: Java, C#, Python (2 and 3), JavaScript, Go, C++, Swift.</p>
З# 8 без NullReferenceException

Автор: Christian Nagel

.NET спецификация говорит о том, что приложение никогда не должно генерировать NullReferenceException. Впрочем, риск встречи подобного все равно остается во многих библиотеках и приложениях. Де-факто, NullReferenceException – это наиболее часто встречаемый тип исключений. И здесь на сцену выходит C# 8. В новой версии сего прекрасного языка ссылочные типы больше не могут принимать null по-умолчанию. Это и огромный плюс, и отличное нововведение. Но… Это все, конечно, хорошо, но как будут обстоять дела с поддержкой старых библиотек? Именно в этой статье мы как раз и разберем этот вопрос. Зачем нам вообще избегать NullReferenceException? Когда выбрасывается NullReferenceException, причину ошибки далеко не всегда так уж просто найти. Ошибки обычно возникают далеко от очага реальной проблемы. Именно поэтому возникновение подобных ошибок и является крайне нежелательным. Потому вместо проверки на null-исключения просто выбрасывайте ArgumentNullException. Если где-то мы передаем null в качестве аргумента, мы можем просто на уровне компиляции запретить это делать. Просто выбрасываем ArgumentNullException – и мы сразу увидим первопричину ошибки в системе. Давайте рассмотрим, как именно C# 8 решает подобные проблемы. Установка C# 8 На момент написания статьи официального релиза C# 8 еще не было. Впрочем, даже сейчас вы можете его опробовать. Сейчас, на момент написания статьи, для этого нужно иметь Visual Studio 2017 15.5-15.7. На заметку! Устанавливая эту версию компилятора, вы наверняка встретите множество предупреждений со стороны уже существующих C#-проектов. По-умолчанию используется последняя стабильная версия языка. Чтобы избавиться от предупреждений, просто явно задайте версию компилятора. Ссылочные типы больше не могут принимать null Ничего сложного для понимания здесь нет. Синтаксис, подобный  обычным значимым типам. Хотите, чтобы ссылочный тип принимал null? Ставим после оглашения типа знак вопроса. В то же время, хотя внешне синтаксис ссылочных и значимых типов выглядит похоже, сам принцип реализации кардинально другой. При работе со значимыми типами компилятор использует специальный тип Nullable. Это значимый тип, который помимо прочего также содержит в себе приватное булевское поле, определяющее, является ли значение переменной null. Со ссылочными типами компилятор просто добавляет атрибут Nullable. Версия 8 распознает этот атрибут и обрабатывает его соответствующим образом. Версия 7 его не понимает и просто игнорирует. При компиляции программы под C# 7 Book b и Book? b будут распознаны одинаково. Приведенный выше тип Book определяет не-nullable свойства Title и Publisher, а также nullable Isbn. Плюс, этот тип также содержит конструктор-кортеж. Используя тип Book и получая значение переменной Isbn, мы можем хранить полученные данные только в переменной типа string?. Присваивание Nullable к не-Nullable В случае, если нам нужно присвоить nullable-тип, C# 8 анализирует код. В коде ниже, так как isbn сравнивается с null, после условной конструкции isbn больше не сможет вернуть null. И так как сигнатура метода не предусматривает возвращение string?, при возвращении значения типа произойдет конверсия. Конечно, эту же конструкцию можно написать гораздо проще и элегантнее. Возвращение и передача значения Здесь мы можем видеть класс NewAndGlory, построенный с использованием возможностей последней версии С#. Сигнатура метода GetANullString предусматривает возвращение null, так что в нашем случае этот метод просто возвращает null. Метод GetAString не сможет в свою очередь вернуть null. Что же касательно последнего метода PassAString, тут тоже все очень просто. Мы передаем string и возвращаем также string. По этой причине смысла в проверке на null нет. С другой стороны, предположим, что у нас есть библиотека TheOldLib, использующая 7 компилятор (задается в файле *.csproj). Класс Legacy определяет метод GetANullString, что просто возвращает null. Метод PassAString принимает строку и проверяет ее на null. Также библиотека определяет интерфейс ILegacyInterface, задающий сигнатуру метода, что возвращает строку. С использованием шарпа 7 версии, мы не можем здесь указать, должна ли строка принимать null, или нет. Приложение на C# 8 могут использовать библиотеки, созданные и при помощи C# 7 Теперь давайте рассмотрим пример консольного приложения, что ссылается на старые и на новые библиотеки. Используя класс NewAndGlory, в качестве ожидаемого результата метода GetNullString мы можем получить только string?. Попытка же передать null в метод PassAString породит ошибку уровня компиляции (невозможно преобразовать null в не-nullable значение). Обращаясь к классу Legacy, где метод GetANullString, результат может быть записан в тип string. И, так как эта библиотека не создавалась под эгидой C# 8, наш компилятор будет покорно молчать. Претензии он будет предъявлять только в отношении «новых» сборок. Также здесь мы можем вызвать метод PassAString и спокойно передать в нее null. Если бы компилятор ругался на все подобные нюансы более ранних сборок, список возможных ошибок мог формироваться до бесконечности, поэтому здесь и применяется принцип «разностного отношения». Метод Foo интерфейса ILegacyInterface, определенный в библиотеке, собранной с использованием более ранней версии языка, – и здесь он возвращает string. Но как же нам тогда его использовать в C# 8? Как можно заметь ниже, здесь интерфейс может быть реализован с использованием как string, так и string?. Интерфейсы, реализуемые в рамках C# 8, требуют прямого указания поведения по отношению null. Приложения под C# 7 с использованием сборок C# 8 Что же касательно использования более новых версий сборок в ранних версиях языка, тут нет никаких проблем: все происходит, как и с любыми другими .NET-сборками. Приложение не будет видеть никаких string? – все nullable-ссылочные типы будут интерпретироваться как обычные ссылочные типы -  в нашем случае просто как string. И, конечно же, проблема NullReferenceException остается. Передача в метод PassAString null вызовет NullReferenceException. Для отлавливания подобного в рамках C# ранних версий мы можем проводить ручную проверку на null и выбрасывать ArgumentNullException. Возможно, эта ситуация по отношению к более старым версиям языка в миксе с новыми сборками с дальнейшим развитием C# 8 изменится, но это уже другой вопрос. В заключение Ссылочные типы, не принимающие null, – это одна из ключевых возможностей С# 8, позволяющая минимизировать риск возникновения ошибок типа NullReferenceException. Подобное стало возможным благодаря изменениям внутренней реализации ссылочных типов языка. Впрочем, несмотря на все нововведения, C# 8 по-прежнему может без каких- либо проблем использовать более ранние библиотеки, как и более ранние версии языка – новые библиотеки. Microsoft осталась верной своим канонам обратной совместимости и технически это стало возможно благодаря использованию специальных атрибутов для nullable-типов. Автор перевода: Евгений Лукашук Источник
Із Днем Студента!

Автор: Редакция ITVDN

Дорогие студенты, сегодня Ваш праздник и вся команда ITVDN поздравляет Вас с этим днем! Желаем Вам легких сессий, удачи в Ваших начинаниях и порой нелегком обучении. Мы всегда трудимся для Вас и способствуем изучению ИТ, у нас действует постоянная скидка 20% для студентов, а также чья специальность связана с информационными технологиями акция «Подписка на 1 месяц бесплатно", действие которой с 1 ноября 2015 до 1 июля 2016 года. C Днем Студента!
Notification success