Разработчики C# поделились 10 скрытыми функциями языка

1
19601
Добавить в избранное

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

К основам относятся объявления, условия, циклы, операторы и прочее. Часть программистов даже добилась определенных успехов в познании анонимных типов, lambda-выражений, LINQ и универсальных шаблонов. Однако лишь немногие разработчики знают о скрытых возможностях языка, поэтому в этой статье эксперты C# поделились своими фишками.

1. Класс Path

Этот совет не совсем про C#, но он будет полезен любому разработчику. К большому сожалению, лишь некоторые специалисты пользуются System.IO.Path.Combine(). Многие просто не знают и не понимают, как это может облегчить разработку. В действительности, весь класс Path обладает большим потенциалом и возможностями, о которых стоит помнить! В любом создаваемом приложении вы обязательно увидите строку, приведенную ниже, несмотря на то, что такого быть не должно:

2. Лямбда-выражения

Лямбда-выражения и типовой вывод в языке недооценены. Лямбда могут иметь множество выражений. К тому же они имеют свойство автоматического удваивания так же, как и совместимые объекты делегата (стоит просто посмотреть на сигнатуру). Пример:

Следует обратить внимание на то, что в этом фрагменте нет new CancellationEventHandler, и поэтому необходимости указывать типы sender и e тоже нет, так как они возвращаются событием. Именно по этой причине такое решение более предпочтительно при написании всего делегата, который, помимо всего прочего, требует указания типов параметров.

Лямбда-выражения не должны ничего возвращать, и в этом контексте вывод типов становится максимально эффективным.
Однако стоит помнить, что вы всегда можете вернуть лямбда-выражение в контексте функционального программирования. Например, вот лямбда, создающая лямбду, обрабатывающую событие Button.Click:

3. Оператор ??

Вы можете связать оператор ?? так, что получится куча нулевых сравнений.

4. Aliased generics

Благодаря этой фиче вы можете использовать ASimpleName, вместо Dictionary<string, Dictionary<string, List>>.

Применяйте этот трюк, когда нужны одинаковые длинные и сложные обобщения во многих местах.

5. Нормализация строк

Во время нормализации string настойчиво советуется применять ToUpperInvariant, а не ToLowerInvariant,так как в Microsoft провели оптимизацию кода для того чтобы выполнять сравнения в верхнем регистре.

6. Оператор коалесценции

Оператор нулевой коалесценции и скобки для автоматической инициализации коллекций.

7. Избегайте проверки на нулевые обработчики событий

Когда вы добавляете пустой делегат события во время объявления, то избавляете себя от нужды все время проверять событие на null перед тем как его вызвать. Пример:

Позволяет делать вам так:

А не так:

8. Неявные обобщения

1) Неявные обобщения (не только для методов, но и для классов):

2) Простые лямбда-выражения с одним параметром:

3)Анонимные типы и инициализаторы:

4) Автоматические свойства могут иметь различные области действия:

5) Псевдоним пространства имен:

9. Ключевое слово «as»

Использование ключевого слова «as» приводит этот код

к следующему виду:

Во втором случае возвращаемое значение будет null, если obj — это не MyClass, а не бросит исключение класса.

10. Автоматические свойства

Автоматические свойства, которые превращают это:

в это:

Также инициализаторы объектов

становятся:

Разработчики C# также интересуются:

Источник

Интересуетесь программированием на C#?

Подпишитесь на нашу рассылку, чтобы получать больше интересных материалов:

И не беспокойтесь, мы тоже не любим спам. Отписаться можно в любое время.




Добавить комментарий