Что мешает написать object f(List<object> l) => l[0];
Меня больше интересует, почему нельзя List<string> скастить к List<object>? Потому что параметр дженерика не ограничен where T: class?
каст к обджекту конечно всегда можно сделать, так HKT сейчас и обходят) но ты ведь понимаешь что перформанс от этого страдает