Je dois afficher la liste code> d'un dictionnaire code> en fonction de la touche int code> J'ai entré dans la console et lancer code> Un message d'erreur si le cas échéant des limites données des entrées de la console. public class Channel
{
const string displayChannel = "{0},{1},{2}";
private Dictionary <int, string> ChannelLookup =
new Dictionary <int, string> ()
{
{1, new List<string>{"[A]","[B]","[C]"}},
{2, new List<string>{"[A]"}
};
public string channelDisplay (int val)
{
if (!ChannelLookup.ContainsKey(val))
{
// throw exception
}
else
{
string display = string.Format(displayChannel, ChannelLookup[val]);
return display;
}
}
}
3 Réponses :
.NET ne vous permet pas de faire des paramètres de format inutilisés, c'est-à-dire que vous ne pouvez pas faire cela
Votre meilleur pari ici est probablement string.join. string.join concaténera les valeurs que vous y fournissez, plaçant le délimiteur spécifié entre chaque valeur. P> string.format ("{0}, {1}", "première valeur") code> sans fournir également une valeur pour {1}. public class Channel
{
private Dictionary <int, string> ChannelLookup =
new Dictionary <int, string> ()
{
{1, new List<string>{"[A]","[B]","[C]"}},
{2, new List<string>{"[A]"}
};
public string channelDisplay (int val)
{
if(!ChannelLookup.ContainsKey(val))
{
// throw exception
}
else
{
string display = string.Join(",", ChannelLookup[val]);
return display;
}
}
}
Vous devez supprimer la chaîne de format displayhannel code> lorsque vous utilisez string.join. String.join (",", ChannellookUp [VAL]) CODE> serait correct.
Actualisé. Merci.
Vous devez afficher numéro arbitraire em> d'éléments (dire, ou même p> 3 code> - "[a]" "," [B] "," [B] "" code> ou juste 1 code> - "a"); Soit rejoindre code> à la place de l'utilisation de format code>
juste pour la complétude: parfois j'utilise agrégat code> au lieu de joindre code>, car il vous donne plus de contrôle. var values = ChannelLookup[val].Values;
var display = values.Aggregate((a, b) => $"{a}, {b}");
Note latérale: l'inconvénient de agrégat code> est qu'il crée de nombreuses instances code> string code> (une instance par élément dans valeurs code>); Si valeurs code> est long i> valeurs.Accrégation code> peut être lent.
Est-il autorisé à utiliser LINQ?