您无法执行此操作,因为它并不安全。考虑:
List<Joe> joes = GetJoes(); List<Human> humanJoes = joes;humanJoes.Clear();humanJoes.Add(new Fred());Joe joe = joes[0];
显然,最后一行(如果不是更早的那一行) 必须 失败-因为a
Fred不是a
Joe。的不变性
List<T>可防止在 编译
时而不是执行时发生此错误。

您无法执行此操作,因为它并不安全。考虑:
List<Joe> joes = GetJoes(); List<Human> humanJoes = joes;humanJoes.Clear();humanJoes.Add(new Fred());Joe joe = joes[0];
显然,最后一行(如果不是更早的那一行) 必须 失败-因为a
Fred不是a
Joe。的不变性
List<T>可防止在 编译