2010-07-07 7 views
5

Si tengo un método o una propiedad que devuelve un IEnumerable<SomeType> que conduce a ningún dato, es más eficiente para devolver una matriz vacía new SomeType[0] o es mejor para devolver una lista vacía new List<SomeType>() o hay una aún mejor solución (IMO construyendo un tipo propio con genéricos podría ser una solución así, pero me parece un poco exagerado)?IEnumerable sin datos

La matriz es mi favorita, pero ¿qué opina de esto?

+0

Debería estar lista vacía porque es más seguro para el tiempo de ejecución. – thethanghn

+4

@thethanghn: ¿Puedes explicar a qué te refieres con "más seguro para el tiempo de ejecución"? Una lista vacía es menos segura que una matriz vacía porque * una lista vacía puede mutarse para que ya no esté vacía *. Una matriz vacía no puede. –

Respuesta

15
+0

Mejor que crear un objeto nuevo cada vez que se llama a la propiedad. –

+1

Todavía me parece extraño que sea Enumerable.Empty () en lugar de Enumerable .Empty(). – spender

+0

Tal vez si fuera "Enumerable .Empty()" entonces se llamaría al constructor de la clase para Enumerable para cada Tipo que se usa (si no se ha inicializado) y con "Enumerable.Empty ()" esto podría evitarse (solo una idea, no tengo ningún conocimiento profundo de los genéricos). – HCL