trató de correr el análisis de código de ejecución en un proyecto aquí, y tiene un número de señales de advertencia que dice algo como esto:C#: Diferencia entre la lista <T> y Colección <T> (CA1002, no exponga las listas genéricas)
CA1002: Microsoft.Design: Cambio 'Lista < SomeType>' en 'SomeClass.SomeProtectedOrPublicProperty' Colección de usar, ReadOnlyCollection o KeyedCollection
Wh ¿Debo usar Collection<T>
en lugar de List<T>
? Cuando miro la documentación de msdn, parecen casi iguales. Después de leer la ayuda de error para el aviso, me encontré con que
System.Collections.Generic.List (T) _is una colección genérica, creada para un rendimiento no la herencia y, por lo tanto, no contiene ningún miembro virtuales.
Pero, ¿qué significa esto realmente? ¿Y qué debería estar haciendo en su lugar?
¿Debo seguir usando List<T>
internamente, y luego en las propiedades devuelvo un new Collection<T>(someList)
en su lugar? ¿O debería simplemente comenzar a usar Collection<T>
en lugar de List<T>
?
Ver [esta publicación del blog] (http://blogs.msdn.com/fxcop/archive/2006/04/27/585476.aspx) para una explicación detallada –
Por cierto, si quieres saber por qué colección se encuentra en [System.Collections.ObjectModel entonces lee este] (http://blogs.msdn.com/kcwalina/archive/2005/03/15/396086 .aspx) por Krzysztof Cwalina. –