simple. Si j'utilise: puis je peux l'utiliser comme: p> mais maintenant je traite avec des paires de la valeur clé! J'ai une classe KeyValue pour relier un entier à une valeur de chaîne. Donc je commence par: p> mais je ne peux pas utiliser ceci: p> à la place, je suis obligé de UTILISATION: P> Add(new KeyValue(1, "A"), new KeyValue(2, "B"), new KeyValue(3, "C"), new KeyValue(4, "D"));
3 Réponses :
Si vous avez accepté un identificateur static void Add(IDictionary<int, string> data) {
foreach (var pair in data) {
Console.WriteLine(pair.Key + " = " + pair.Value);
}
}
Vous pouvez également utiliser le type d'aliasing de type si vous ne voulez pas taper tout type de type dictionnaire générique à l'aide de paires = System.Collections.generic.dictionary Ajouter (Nouvelles paires {{1, "A"}, {2, "B"}, {3, "C"}, {4, "D"}}); Code> Légèrement Natre.
Vous pouvez utiliser quelque chose comme ce qui suit avec l'inconvénient évident que vous perdez de la dactylographie forte.
public void Add(params Object[] inputs)
{
Int32 numberPairs = inputs.Length / 2;
KeyValue[] keyValues = new KeyValue[numberPairs];
for (Int32 i = 0; i < numberPairs; i++)
{
Int32 key = (Int32)inputs[2 * i];
String value = (String)inputs[2 * i + 1];
keyvalues[i] = new KeyValue(key, value);
}
// Call the overloaded method accepting KeyValue[].
this.Add(keyValues);
}
public void Add(params KeyValue[] values)
{
// Do work here.
}
Vous pouvez modifier votre conception de classe actuelle, mais vous devrez ajouter des génériques et utiliser l'interface iEnumerable. Après ces ajouts, vous pouvez effectuer ce qui suit: P> new KeyValueList<int, string>() { { 1, "A" }, { 2, "B" } };
Héritage de Liste Ajouter code> serait la voie la plus facile ici.
@MARC: Bonne idée. Je n'y ai pas pensé.
Vous savez qu'il y a déjà un
keyvaluepair code>? Ouais je sais. :-) C'est le type que j'utilise ...