Non, le compilateur nécessite une méthode nommée Add
pour la collecte de l'initialiseur de travail. Ceci est défini dans la spécification C# et ne peut pas être changé:
Spécification Du Langage C# - 7.5.10.3 Initialiseurs De La Collection
L'objet de collection à laquelle un initialiseur de collection est appliqué doit être d'un type qui implémente System.Collections.IEnumerable
ou une erreur de compilation se produit. Pour chaque élément spécifié dans l'ordre, l'initialiseur de collection invoque un Add
méthode sur l'objet cible avec la liste d'expression de l'élément de l'initialiseur comme argument la liste, l'application normale de la résolution de surcharge pour chaque invocation. Ainsi, l'objet de collection doit contenir une autorisation d' Add
méthode pour chaque élément de l'initialiseur. [c'est moi qui souligne]
Bien sûr, l' Add
méthode peut prendre plus d'un argument (comme Dictionary<TKey, TValue>
):
dic = new Dictionary<int, int> {
{ 1, 2 },
{ 3, 4 }
};
// translated to:
dic = new Dictionary<int, int>();
dic.Add(1, 2);
dic.Add(3, 4);