Реализован ли метод с использованием async
/ await
или нет - это деталь реализация . То, как метод должен вести себя , является деталью контракта, которая должна быть указана обычным способом.
Обратите внимание, что если вы заставите метод возвращать Task
или Task<T>
, более очевидно, что он должен быть асинхронным и, вероятно, будет трудно реализовать без , являющегося асинхронным.
С другой стороны, если есть реализация (например, для целей тестирования), в которой выражения await
не будут никогда неполными, почему вы хотите заставить кого-то написать асинхронный метод без await
звонит в любом случае? Вы ожидаете, что реализации будут привязаны к IO, но, возможно, будут особые случаи, когда реализации захотят использовать жестко закодированные данные и т. Д.
По сути, вы должны разобраться с этим в документации к методу - если вы не можете доверять исполнителям, чтобы прочитать это, у вас все равно нет шансов: (