Estoy creando una nueva lista C# (List<double>
). ¿Hay alguna manera, aparte de hacer un ciclo sobre la lista, para inicializar todos los valores de inicio a 0?Inicialización automática de listas C#
Respuesta
Además de las soluciones funcionales proporcionados (utilizando los métodos estáticos en la clase Enumerable
), puede pasar una matriz de double
s en el constructor.
var tenDoubles = new List<double>(new double[10]);
Esto funciona porque el valor predeterminado de un double
ya es 0, y probablemente realiza un poco mejor.
Sospecho que en realidad funcionará un poco peor. El constructor 'List
@SLaks, punto interesante. Supongo que tienes razón. Probablemente depende del tamaño inicial. Para tamaños iniciales más pequeños, el enfoque funcional es probablemente un poco más eficiente, donde los tamaños iniciales más grandes definitivamente funcionarían mejor con el inicializador de matriz. Al final, sin embargo, supongo que la afirmación de rendimiento es probablemente académica en el mejor de los casos, ya que probablemente nunca hará una diferencia en una aplicación de producción real. –
Una solución muy inteligente y eficiente. –
Puede utilizar el inicializador:
var listInt = new List<int> {4, 5, 6, 7};
var listString = new List<string> {"string1", "hello", "world"};
var listCustomObjects = new List<Animal> {new Cat(), new Dog(), new Horse()};
Por lo que podría estar usando esto:
var listInt = new List<double> {0.0, 0.0, 0.0, 0.0};
De lo contrario, utilizando el constructor por defecto, la lista estará vacía.
"De lo contrario, utilizando el constructor predeterminado, la lista se inicializará con 0 elementos". Para que quede claro, la lista estará vacía, no es que tenga todas las entradas establecidas en el valor predeterminado. – jason
Lo siento ... mi inglés no es muy bueno –
Tenga en cuenta que esto solo funcionará en VS2008/C# 3/VB9 y no en las versiones anteriores (VS2005/C# 2/VB8) – CraigTP
Usar este código:
Enumerable.Repeat(0d, 25).ToList();
new List<double>(new double[25]); //Array elements default to 0
Creo que esto es más lo que el OP está buscando. –
El primero debe ser var list = Enumerable.Repeat (0d, 25) .ToList(); – jason
Para los tipos más complejos:
List<Customer> listOfCustomers =
new List<Customer> {
{ Id = 1, Name="Dave", City="Sarasota" },
{ Id = 2, Name="John", City="Tampa" },
{ Id = 3, Name="Abe", City="Miami" }
};
desde aquí: David Hayden's Blog
esto no ofrece ninguna ayuda para tratar con valores predeterminados para dobles. – ddc0660
Una posibilidad es utilizar :
int capacity;
var list = Enumerable.Range(0, capacity).Select(i => 0d).ToList();
Otra es:
int capacity;
var list = new List<double>(new double[capacity]);
esto es más como eso. –
Esto es bueno porque el segundo ejemplo se puede usar en C# 2.0. –
Un poco tarde, pero tal vez siendo de interés: mediante LINQ, tratar
var initializedList = new double[10].ToList()
... espero evitar la copia de la lista (que es hasta ahora LINQ).
Esto debería ser un comentario a la respuesta de Michael Meadows, pero me falta reputación.
- 1. C++: listas de inicialización/convenciones de nomenclatura
- 2. listas de inicialización de C++ para múltiples variables
- 3. Python - Inicialización Listas múltiples/Línea
- 4. Copiar listas de inicialización de constructor
- 5. Beneficios de las listas de inicialización
- 6. Listas de inicialización en el constructor
- 7. Dependencias en las listas de inicialización
- 8. Uso de referencia Rvalue dentro de listas de inicialización
- 9. listas de inicialización del constructor orden/asignación pregunta
- 10. C++ vector de inicialización
- 11. Inicialización C# matriz con nueva inicialización vs
- 12. ¿Por qué no puedo construir una cola/pila con listas de inicialización incluidas? (C++ 11)
- 13. Velocidad de C# listas
- 14. 'Inicialización del soporte'. (C++)
- 15. C++ array inicialización
- 16. inicialización extraño en C
- 17. estructuras Inicialización en C++
- 18. inicialización de objetos en C++
- 19. Inicialización del valor de C++
- 20. Inicialización de clase anónima C++
- 21. Inicialización de referencia en C++
- 22. Inicialización de variable en C++
- 23. C# variable de inicialización Pregunta
- 24. C++ 11 semántica "automática"
- 25. C# CodeDom Propiedad automática
- 26. C++ copia de inicialización e inicialización directa, el caso extraño
- 27. Actualización automática de programas C#
- 28. Actualización automática de programas C#
- 29. Detección automática de dependencias C
- 30. C++ Suprimir la inicialización y destrucción automáticas
esto es factible, pero las listas en .net no tienen un tamaño definido, por lo que su tipo de puntos de acceso – DevelopingChris