Информация об изменениях

Сообщение Зачем нужно писать "async"?! от 03.10.2014 17:25

Изменено 04.10.2014 22:58 artelk

http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/6518729-don-t-require-async-keyword-for-the-methods-with

Ок, еще раз. Ключевое слово async было введено для обратной совместимости — на случай, если кто-то, где-то и как-то использует await в качестве имени метода, типа и т.д.
В более чем 99.9% случаев никто с таким не столькнется, однако указывать async в "сигнатуре" метода требуется всегда, когда нужен await. Async, указанный в заголовке метода, вводит в заблуждение, заставляя думать, что он является частью сигнатуры и что весь метод выполняется асинхронно.
Я предлагаю сделать инверсию: по умолчанию await разрешен. Это является удовлетворительным для вышеупомянутых более 99.9% случаев.
Атрибутом [EnableAwait(false)] можно запретить await для контретного метода, всех методов класса или сборки, тем самым переопределив поведение по умолчанию.
Так же возможно, например, указать [EnableAwait(false)] для класса, но указать [EnableAwait(true)] для его отдельных методов.