Una interfaz conjunto expresa sólo que la colección resultante puede ser:
- ensayaron para la adhesión
- enumerado más en algún orden arbitrario (que podría cambiar)
una interfaz lista expresa la primero, pero el segundo es más fuerte, el orden está bien definido y no cambiará a menos que algo lo indique.
Mediante el uso de un contrato menos restrictivo (juego) que adquiera más libertad en lo que se puede utilizar (puede cargar el juego en cualquier orden, por ejemplo, y nadie la utilización de su clase debe cuidar si esta ordenación no es consistente)
He pasado por alto el hecho de que el conjunto asegura aún más que no puede contener duplicados (que es una limitación para los implementadores). Sin embargo, si necesita almacenar tales instancias, un conjunto simplemente sería inaceptable, por lo que deja de ser un problema y, en su lugar, se convierte en positivo. El trabajo del consumidor se vuelve aún más fácil ya que no tienen que preocuparse de que existan duplicados porque esto ya se ha garantizado para ellos.
Un tema algo relacionado: http://stackoverflow.com/questions/1023697/why-have-hashset-but-not-set-in-c esto es en lo que respecta al BCL en comparación con NHibernate específico. –