В базовом классе определяю:
public virtual async Task<int> GetС() { return 0; }
Предупреждение: "В данном асинхронном методе отсутствуют await операторы поэтому метод будет выполняться синхронно."
А методы в производных классах,
public override async Task<int> GetС() { ... }
в которых есть await будут выполняться асинхронно, если в вызове указывать базовый класс?