Saltar al contenido

No se puede convertir implícitamente la Lista a la colección

Te sugerimos que revises esta solución en un entorno controlado antes de enviarlo a producción, saludos.

Solución:

¿Por qué no simplemente hacer lo siguiente?

Collection collection = new Collection(theList);

como colección (entrada IList) toma una lista como parte de la construcción.

List no deriva de Collection – sin embargo, implementa ICollection. Esa sería una mejor opción de tipo de retorno.

En cuanto a new List(some collection) pregunta: depende en parte de cuál sea la colección. Si se implementa ICollection (en tiempo de ejecución) entonces el constructor puede usar su Count property para crear la lista con la capacidad inicial correcta antes de recorrerla y agregar cada elemento. Si no se implementa ICollection entonces es simplemente equivalente a:

List list = new List();
foreach (int x in otherCollection)

    list.Add(x);

Todavía es bueno tenerlo en un constructor conveniente, pero no es muy eficiente; en realidad, no puede serlo.

No creo que el constructor haga nada astuto para las matrices, lo que potencialmente podría hacer, usando Array.Copy o lo que sea para simplemente copiar el lote de una sola vez en lugar de iterar. (Igualmente si fuera otro List podría llegar al respaldo array y copiar eso directamente.)

List no hereda de Collection. Llano y simple. A no ser que List proporciona un operador para convertir implícitamente a/desde Collection, no puedes hacerlo. De hecho, sugeriría regresar List si puedes, ya que creo que las reglas son algo como esto:

Acepte como parámetro la interfaz menos constrictiva posible. Devuelve como parámetro de retorno el tipo más constrictivo posible.

Puedes auxiliar nuestro estudio añadiendo un comentario o puntuándolo te estamos agradecidos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *