Есть ли аналоги корутин Unity в языке c# и как их использовать?
На сколько я знаю, корутины в Unity реализованы через IEnumerator и объекты WaitForSeconds.

IEnumerator и IEnumerable - это стандартные интерфейсы, которые используются для реализации перечислений/коллекций и итераторов.

А вот ожидание в C# ты можешь получить через метод Thread.Sleep (в синхронных методах) или await Task.Delay (в асинхронных методах).
Корутины в Unity придуманы были, из-за отсутствия вменяемой асинхронности в шарпе древние времена, причем сами корутины завязаны на жизненный цикл приложения Unity. Нужна асинхронность, есть async/await,  параллельность - TPL (Task Parallel Library). 

https://learn.microsoft.com/en-us/dotnet/standard/...