Outils pour utilisateurs

Outils du site


lang:csharp:dictionary

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
lang:csharp:dictionary [2016/08/23 11:25] – Création rootlang:csharp:dictionary [2017/01/04 15:03] (Version actuelle) – [SortedDictionary avec une class comme clé] : précision sur la fonction de comparaison. root
Ligne 1: Ligne 1:
 =====Trouver une clé depuis une valeur===== =====Trouver une clé depuis une valeur=====
-Pas possible sans parcourir toute la liste. Ou alorsfaire un dictionnaire inversé si les valeurs sont uniques.+Nécessite ''Linq'' et de parcourir toute la liste. 
 +<code csharp> 
 +IEnumerable<KeyValuePair<FlowLayoutPanelIHMPanel>> items = liste.Where(f => f.Value.Name.StartsWith("Plop")); 
 +</code>
  
 =====Mettre un KeyValuePair à null===== =====Mettre un KeyValuePair à null=====
-Si une fonction renvoie un KeyValuePair, il peut être nécessaire de renvoyer la valeur null. Mais KeyValuePair ne peut pas. A la place, il faut utiliser ''default(KeyValuePair<T,U>)'' et ensuite comparer la valeur de retour avec ''retour.Equals(default(KeyValuePair<T,U>)) == 0''.+Si une fonction renvoie un KeyValuePair, il peut être nécessaire de renvoyer la valeur null. Mais KeyValuePair ne peut pas. A la place, il faut utiliser ''default(KeyValuePair<T,U>)'' et ensuite comparer la valeur de retour avec ''retour.Equals(default(KeyValuePair<T,U>))''
 + 
 +=====SortedDictionary avec une class comme clé===== 
 +La classe (ici, une structure) 
 +<code csharp> 
 +private struct KeyIni 
 +
 +    public string Section; 
 +    public string Key; 
 +
 +</code> 
 + 
 +La fonction de comparaison, avec ''x'' la nouvelle valeur et ''y'' la valeur à comparer. Pour insérer ''x'' avant ''y'', il faut renvoyer -1, pour insérer ''x'' après ''y'', il faut renvoyer 1 et si ''x'' est identique à ''y'', il faut renvoyer 0. Si cette fonction renvoie 0, une exception de type ''ArgumentException'' sera déclenchée. 
 +<code csharp> 
 +private class SortKeyIni : IComparer<KeyIni> 
 +
 +    public int Compare(KeyIni x, KeyIni y) 
 +    { 
 +        // On compare x par rapport à y. 
 +        int compareVal = x.Section.CompareTo(y.Section); 
 + 
 +        // Est-ce que les sections sont différentes ? 
 +        if (compareVal != 0) 
 +        { 
 +            return compareVal; 
 +        } 
 +        // Si les sections sont différentes, on compare les clés. 
 +        else 
 +        { 
 +            return x.Key.CompareTo(y.Key); 
 +        } 
 +    } 
 +
 +</code> 
 +Déclaration du dictionnaire trié. 
 +<code csharp> 
 +SortedDictionary<KeyIni, string> keyPairs = new SortedDictionary<KeyIni, string>(new SortKeyIni()); 
 +</code> 
lang/csharp/dictionary.1471944333.txt.gz · Dernière modification : 2016/08/23 11:25 de root