0
votes

Comment afficher / sortir / manipuler le contenu du dictionnaire?

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;
        }
    }
}


1 commentaires

Est-il autorisé à utiliser LINQ?


3 Réponses :


0
votes

.NET ne vous permet pas de faire des paramètres de format inutilisés, c'est-à-dire que vous ne pouvez pas faire cela string.format ("{0}, {1}", "première valeur") code> sans fournir également une valeur pour {1}.

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>

Voir les docs ici P>

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;
  }
 }
}


2 commentaires

Vous devez supprimer la chaîne de format displayhannel lorsque vous utilisez string.join. String.join (",", ChannellookUp [VAL]) serait correct.


Actualisé. Merci.



1
votes

Vous devez afficher numéro arbitraire d'éléments (dire, 3 - "[a]" "," [B] "," [B] "" ou juste 1 - "a"); Soit rejoindre à la place de l'utilisation de format xxx

ou même xxx


0 commentaires

2
votes

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}");


1 commentaires

Note latérale: l'inconvénient de agrégat est qu'il crée de nombreuses instances string (une instance par élément dans valeurs ); Si valeurs est long valeurs.Accrégation peut être lent.