¿Qué hace que ValueTuple sea covariante?

Esto se compila correctamente en C # 7.3 (Framework 4.8): (string, string) s = ("a", "b"); (object, string) o = s; Sé que esto es azúcar sintáctico para lo siguiente, que también se compila correctamente: ValueTuple<string, string> s = new ValueTuple<string, string>("a",...