Если вы начинаете знакомство с С# или хотите расширить свои познания, вам стоит изучить эти полезные особенности языка, которые помогут вам упростить код, избежать ошибок и сэкономить кучу времени.
async или await
Используйте возможности асинхронного программирования для того, чтобы разблокировать возможности одного потока, пока ожидается завершение другого. Например: если происходит медленный веб-запрос, то при синхронных программировании незанятый поток будет простаивать, пока веб-запрос не будет выполнен. Асинхронное программирование при помощи модификатора async
позволяет избежать этого. Также полезным является использование async
вместе с операторомawait
, который приостанавливает выполнение потока, пока не произойдет ожидаемое событие.
Инициализаторы объектов, массивов и коллекций
Намного проще создавать экземпляры классов, массивы и коллекции при помощи специальных инициализаторов:
Лямбда-выражения, делегаты и замыкания
Они бывают необходимы в самых разнообразных случаях, но самую большую пользу они приносят при работе с LINQ. Узнайте о них побольше/
Оператор объединения со значением null
??
— довольно простой, но очень полезный оператор для определенных ситуаций. ??
возвращает левый операнд, если он не NULL, иначе он вернет правый операнд:
Интерполированные строки $»{x}»
Новые возможности C# 6 позволяют вам интерполировать (разбивать) строки простым и элегантным путем:
Вы можете подставлять различные значения переменных в фигурные скобки в любой части строки, что делает инструмент весьма мощным и полезным.
Оператор безопасной навигации
Вот пример работы с оператором:
Выражение nameof
На первый взгляд использование nameof
не является столь уж нужным, однако на самом же деле nameof
весьма полезен, когда вы используете автоматические инструменты рефакторинга, вроде ReSharper, и тогда вам нужно обращаться к аргументу метода по его имени.
Но при использовании автоматического рефакторинга лучше реализовать тот же код следующим образом:
Больше информации.
Инициализаторы свойств
Инициализаторы свойств позволяют вам объявить начальное значение свойства:
Преимуществом является то, что значения свойств не являются неизменными, что придает некоторую гибкость вашему классу. Также примечательным является то, что инициализаторы свойств вполне реализуются внутри обычного конструктора.
Операторы as и is
Оператор is
используется для того, чтобы определить принадлежность объекта к типу, если это так, то вернет true. Например, является ли объект Person экземпляром типаAdult или типа, производного от Adult:
Для проверки возможности преобразования типов используйте оператор as
:
Если преобразование невозможно, то будет возвращено значение NULL.
Ключевое слово yield
Если используется ключевое слово yield
в инструкции, то это означает, что обычный метод, метод доступа get
или оператор, в котором оно встречается, является итератором. В следующем примере метод будет возвращать по порядку различные степени двойки по экспоненте: 2, 4, 8, 16, 32, 64, 128, 256.
yield
позволяет избежать создания явного дополнительного класса, в котором содержится состояние перечисления. Отличный и простой способ создания последовательности объектов. Более подробно ознакомьтесь.