using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Developpez.Dotnet.Collections
{
///
/// Fournit des méthodes d'extension pour manipuler des dictionnaires
///
public static class DictionaryExtensions
{
///
/// Renvoie la valeur correspondant à la clé spécifiée si celle-ci existe, ou la valeur par défaut
/// spécifiée si la clé n'existe pas
///
/// Type de la clé
/// Type de la valeur
/// Le dictionnaire à partir duquel renvoyer la valeur
/// La clé recherchée
/// La valeur par défaut à renvoyer si la clé n'existe pas
/// Si la clé existe, renvoie la valeur correspondante. Sinon, renvoie la valeur par défaut
public static V GetValueOrDefault(this IDictionary dictionary, K key, V defaultValue)
{
V value;
if (!dictionary.TryGetValue(key, out value))
value = defaultValue;
return value;
}
///
/// Renvoie la valeur correspondant à la clé spécifiée si celle-ci existe, ou la valeur par défaut
/// du type de la valeur si la clé n'existe pas
///
/// Type de la clé
/// Type de la valeur
/// Le dictionnaire à partir duquel renvoyer la valeur
/// La clé recherchée
/// Si la clé existe, renvoie la valeur correspondante. Sinon, renvoie la valeur par défaut
public static V GetValueOrDefault(this IDictionary dictionary, K key)
{
return dictionary.GetValueOrDefault(key, default(V));
}
///
/// Renvoie un wrapper en lecture seule pour un dictionnaire
///
/// Type de la clé
/// Type de la valeur
/// Le dictionnaire pour lequel renvoyer un wrapper
/// Un wrapper en lecture seule du dictionnaire
public static ReadOnlyDictionary AsReadOnly(this IDictionary dictionary)
{
return new ReadOnlyDictionary(dictionary);
}
///
/// Renvoie un wrapper ou une copie en lecture seule pour un dictionnaire
///
/// Type de la clé
/// Type de la valeur
/// Le dictionnaire pour lequel renvoyer un wrapper
/// true pour renvoyer une copie en lecture seule du dictionnaire ; false pour renvoyer simplement un wrapper du dictionnaire existant
/// Un wrapper ou une copie en lecture seule du dictionnaire
public static ReadOnlyDictionary AsReadOnly(this IDictionary dictionary, bool copy)
{
return new ReadOnlyDictionary(dictionary, copy);
}
}
}