Необработанные строковые литералы

Необработанные строковые литералы — это новый формат строковых литералов. Имея возможность содержать специальные символы, новые строки, пробелы, встроенные кавычки и другие вещи, они значительно упрощают работу со строками, содержащими JSON, HTML или другие обычно сильно экранированные (до сих пор) строки. Согласно спецификации необработанный строковый литерал начинается как минимум с 3 символов двойных кавычек и заканчивается таким же количеством символов двойных кавычек. Да, по крайней мере, это говорит, и если вам интересно, почему, ответ прост — использование 3 двойных кавычек позволяет вам использовать 2 двойных кавычки подряд в вашем строковом литерале, а использование N (N›3) двойных кавычек позволяет вам использовать N-1 двойных кавычек подряд в вашем литерале. Вот пара примеров, извините за невежественное выделение GitHub:

Пример с интерполяцией — теперь вы можете использовать несколько символов $, чтобы указать, сколько фигурных скобок необходимо в вашем литерале для запуска интерполяции:

Шаблоны списка

Теперь вы можете сопоставить массив или список с последовательностью шаблонов, соответствующих элементам. Это позволяет проверить, соответствует ли коллекция определенному шаблону или форме. Помимо обычных элементов шаблон может содержать специальные символы:

  • Любой шаблон может быть частью последовательности, чтобы проверить, соответствует ли элемент его характеристикам.
  • Шаблон отбрасывания (_) соответствует любому отдельному элементу.
  • Шаблон диапазона (..) соответствует нулю или более элементам. В последовательности допускается не более одного шаблона диапазона.
  • И, наконец, шаблон var можно использовать для захвата элемента.

Проверка нулевого значения параметра

Хорошо, давайте проясним с самого начала. Эта функция убрана из C# 11. Но лично я очень ждал ее появления, поэтому все равно напишу о ней. Если вы когда-либо использовали внедрение зависимостей, то у вас, вероятно, было много проверок на null в ваших конструкторах, например:

Это уже довольно короткая и красивая версия однообразной и скучной вещи. Однако C# 11 должен был сделать это еще проще:

Однако отзывы сообщества были неоднозначными, и не было согласия ни по поводу синтаксиса (очевидно, !! звучит слишком громко для некоторых людей), ни по поводу того, нужна ли эта функция вообще. Функция может быть пересмотрена в будущем. Может быть…