Skip to main content

Practice · 1 of 3

Variance legality

CHALLENGE
Difficulty: advanced+25 XP

Implement static string Variance(IEnumerable<object> xs) returning "ok", and prove contravariance: implement static Action<string> AsObjectAction(Action<object> a) => a; (assigning Action<object> to Action<string> is legal because T is contravariant in Action<in T>). Also implement static string First(IReadOnlyList<string> list) returning list[0] — IReadOnlyList<out T> is covariant.

Back to lesson: Practice: Generic machinery