Comments 11
Я бы добавил Task vs ValueTask обсуждение.
Ага. Когда я замерял производительность, Task всегда оказывался эффективнее, чем ValueTask.
Спасибо, отличный перечень в короткой статье минорных, но приятных возможностей C#7. При этом хотелось бы, чтобы в статье упоминался еще async Main() (появился, если не ошибаюсь, в C# 7.2).
Насколько понимаю, в предыдущих статьях об этом не говорилось, однако это достаточно важная возможность, когда асинхронным API пользуется консольное приложение, и ей самое место в статье про солянку минорных возможностей.
До этого было не очень здорово, когда приходилось бойлерплейтить код, позволяющий вызывать из Main асинхронное API.
Насколько понимаю, в предыдущих статьях об этом не говорилось, однако это достаточно важная возможность, когда асинхронным API пользуется консольное приложение, и ей самое место в статье про солянку минорных возможностей.
До этого было не очень здорово, когда приходилось бойлерплейтить код, позволяющий вызывать из Main асинхронное API.
p.GetCoordinates(out var x, out var y);
Читабельность ломается, непонятно какой тип. Хотя в некоторых случаях наверное удобно так писать.
Уже можно начинать писать статьи о новых возможностях C# 8
> Out переменные
> У переменной будет значение по умолчанию.
Если я правильно понимаю, там будет то, что туда положит вызываемая функция (она же обязана присвоить значения
> У переменной будет значение по умолчанию.
Если я правильно понимаю, там будет то, что туда положит вызываемая функция (она же обязана присвоить значения
out
-параметрам перед выходом). Да, скорее всего там будут дефолты, но в целом, по идее, это необязательно.Встает вопрос, а что если конвертирование строки в в переменную типа DateTime будет неудачным, а мы все равно попытаемся воспользоваться выходным значением?
У переменной будет значение по умолчанию.
Мне кажется это не совсем правда. В общем случае там будет значение, которым метод инициализировал переменную. И совсем не обязательно это будет дефолтное значение. Согласно спецификации C# использование ключевого слова out с параметром метода обязывает метод инициализировать значение переменной до возвращения значения, но не накладывает никаких ограничений на само значение для инициализации.
Sign up to leave a comment.
Исследуем минорные возможности C# 7