¿Por qué se requiere un método Agregar para la inicialización {}?

Para usar una sintaxis de inicialización como esta:

var contacts = new ContactList
{
    { "Dan", "[email protected]" },
    { "Eric", "[email protected]" }
};

... entiendo que miContactList tiponecesitaría definir unAdd método eso toma dosstring parámetros:

public void Add(string name, string email);

Lo que me confunde un poco sobre esto es que el{ } la sintaxis del inicializador parece más útilal crear colecciones de solo lectura o de tamaño fijo. Después de todo, está destinado a imitar la sintaxis de inicialización para unformación, ¿derecho? (OK, entonces las matrices no son de solo lectura; peroson tamaño fijo.) Y, naturalmente, solo se puede usar cuando se conoce el contenido de la colección (al menos el número de elementos) en tiempo de compilación.

Por lo tanto, casi parece que el requisito principal para usar esta sintaxis de inicializador de colección (tener unAdd método y, por lo tanto, una colección mutable) está en desacuerdo con el caso típico en el que sería más útil.

Estoy seguro de que no he pensado tanto en este asunto como el equipo de diseño de C #; solo parece que podría haber diferentes reglas para esta sintaxis que se habrían adaptado mejor con sus escenarios de uso típicos.

¿Estoy fuera de la base aquí? Es el deseo de usar el{ } ¿La sintaxis para inicializar colecciones de tamaño fijo no es tan común como creo? ¿Qué otros factores podrían haber influido en la formulación de los requisitos para esta sintaxis que simplemente no estoy pensando?

Respuestas a la pregunta(9)

Su respuesta a la pregunta