Exécution d'opérations de chaînes indépendantes de la culture dans des collections

Guide du développeur .NET Framework 
Exécution d'opérations de chaînes indépendantes de la culture dans des collections 

L'espace de noms System.Collections contient des classes et des membres qui génèrent un comportement dépendant de la culture par défaut. Les constructeurs par défaut des classes CaseInsensitiveComparer et CaseInsensitiveHashCodeProvider initialisent une nouvelle instance à l'aide de la propriété Thread.CurrentCulture. Toutes les surcharges de la méthode CollectionsUtil.CreateCaseInsensitiveHashTable créent une nouvelle instance de la classe Hashtable à l'aide de la propriété Thread.CurrentCulture par défaut. Les surcharges de la méthode ArrayList.Sort effectuent des tris dépendants de la culture par défaut à l'aide de Thread.CurrentCulture. Le tri et la consultation dans un SortedList peuvent être affectés par le Thread.CurrentCulture lorsque les chaînes sont utilisées comme clés. Suivez les recommandations d'utilisation contenues dans cette section pour obtenir des résultats indépendants de la culture de la part de ces classes et de ces méthodes de l'espace de noms Collections.

Utilisation des classes CaseInsensitiveComparer et CaseInsensitiveHashCodeProvider

Les constructeurs par défaut de CaseInsensitiveHashCodeProvider et CaseInsensitiveComparer initialisent une nouvelle instance de la classe à l'aide de Thread.CurrentCulture, ce qui permet d'obtenir un comportement dépendant de la culture. L'exemple de code suivant illustre le constructeur de Hashtable qui est dépendant de la culture, car il utilise les constructeurs par défaut de CaseInsensitiveHashCodeProvider et CaseInsensitiveComparer.



Visual Basic
internalHashtable = New Hashtable(CaseInsensitiveHashCodeProvider.Default, CaseInsensitiveComparer.Default)


C#
internalHashtable = new Hashtable(CaseInsensitiveHashCodeProvider.Default, CaseInsensitiveComparer.Default);

Si vous souhaitez créer un Hashtable indépendant de la culture à l'aide des classes CaseInsensitiveComparer et CaseInsensitiveHashCodeProvider, initialisez des nouvelles instances de ces classes à l'aide de constructeurs qui acceptent un paramètre culture. Pour le paramètre culture, spécifiez CultureInfo.InvariantCulture. L'exemple de code suivant illustre le constructeur d'un Hashtable indépendant de la culture.



Visual Basic
internalHashtable = New Hashtable(New
    CaseInsensitiveHashCodeProvider(CultureInfo.InvariantCulture),
    New CaseInsensitiveComparer(CultureInfo.InvariantCulture))


C#
internalHashtable = new Hashtable(new CaseInsensitiveHashCodeProvider
    (CultureInfo.InvariantCulture), 
    new CaseInsensitiveComparer(CultureInfo.InvariantCulture));

Utilisation de la méthode CollectionsUtil.CreateCaseInsensitiveHashTable

La méthode CollectionsUtil.CreateCaseInsensitiveHashTable est un raccourci utile pour créer une nouvelle instance de la classe Hashtable qui ignore la casse des chaînes. Toutefois, toutes les surcharges de la méthode CollectionsUtil.CreateCaseInsensitiveHashTable sont dépendantes de la culture, car elles utilisent la propriété Thread.CurrentCulture. Vous ne pouvez pas créer de Hashtable indépendant de la culture à l'aide de cette méthode. Pour créer un Hashtable indépendant de la culture, utilisez le constructeur Hashtable qui accepte un paramètre culture. Pour le paramètre culture, spécifiez CultureInfo.InvariantCulture. L'exemple de code suivant illustre le constructeur d'un Hashtable indépendant de la culture.



Visual Basic
internalHashtable = New Hashtable(New
    CaseInsensitiveHashCodeProvider(CultureInfo.InvariantCulture),
    New CaseInsensitiveComparer(CultureInfo.InvariantCulture))


C#
internalHashtable = new Hashtable(new CaseInsensitiveHashCodeProvider
    (CultureInfo.InvariantCulture), 
    new CaseInsensitiveComparer(CultureInfo.InvariantCulture));

Utilisation de la classe SortedList

SortedList représente une collection de paires valeur-clé triées par les clés et accessible par clé et par index. Lorsque vous utilisez un SortedList où des chaînes sont les clés, le tri et la recherche peuvent être affectés par la propriété Thread.CurrentCulture. Pour que le comportement de SortedList soit indépendant de la culture, créez SortedList en utilisant l'un des constructeurs acceptant un paramètre comparer. Le paramètre comparer indique à IComparer l'implémentation à utiliser lors de la comparaison de clés. Pour le paramètre IComparer, spécifiez une classe de comparateur personnalisé qui utilise CultureInfo.InvariantCulture pour comparer des clés. L'exemple suivant illustre une classe de comparateur personnalisé indépendant de la culture que vous pouvez spécifier comme paramètre IComparer pour un constructeur de SortedList.



Visual Basic
Imports System
Imports System.Collections
Imports System.Globalization

Friend Class InvariantComparer
    Implements IComparer 
    Private m_compareInfo As CompareInfo
    Friend Shared [Default] As New InvariantComparer()
    
    Friend Sub New()
        m_compareInfo = CultureInfo.InvariantCulture.CompareInfo
    End Sub   
    
    Public Function Compare(a As Object, b As Object) As Integer _
            Implements IComparer.Compare
        Dim sa As String = CType(a, String)
        Dim sb As String = CType(b, String)
        If Not (sa Is Nothing) And Not (sb Is Nothing) Then
            Return m_compareInfo.Compare(sa, sb)
        Else
            Return Comparer.Default.Compare(a, b)
        End If
    End Function
End Class


C#
using System;
using System.Collections;
using System.Globalization;

internal class InvariantComparer : IComparer 
{
    private CompareInfo m_compareInfo;
    internal static readonly InvariantComparer Default = new
        InvariantComparer();

    internal InvariantComparer() 
    {
        m_compareInfo = CultureInfo.InvariantCulture.CompareInfo;
    }
    
    public int Compare(Object a, Object b)
    {
        String sa = a as String;
        String sb = b as String;
        if (sa != null && sb != null)
            return m_compareInfo.Compare(sa, sb);
        else
            return Comparer.Default.Compare(a,b);
    }
}

En général, si vous utilisez SortedList sur des chaînes sans spécifier de comparateur personnalisé indifférent, un changement dans Thread.CurrentCulture une fois la liste remplie peut invalider cette liste.

Utilisation de la méthode ArrayList.Sort

Les surcharges de la méthode ArrayList.Sort effectuent des tris dépendants de la culture par défaut à l'aide de la propriété Thread.CurrentCulture. Les résultats peuvent varier selon la culture, en raison des différents ordres de tri. Pour supprimer cette dépendance à la culture, utilisez les surcharges de cette méthode acceptant un paramètre IComparer. Pour le paramètre IComparer, spécifiez une classe de comparateur personnalisé indifférent qui utilise CultureInfo.InvariantCulture. La rubrique Utilisation de la classe SortedList contient un exemple de classe de comparateur indifférent personnalisé.

Voir aussi


Ces informations proviennent du site de http://msdn2.microsoft.com
Source de cette page : http://msdn2.microsoft.com/fr-fr/library/84h4y0ta.aspx

Réseaux sociaux

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher les interactions avec les réseaux sociaux sur ces pages.

 

Nuage de mots clés

10 mots clés dont 0 définis manuellement (plus d'information...).

Avertissement

Cette page ne possède pas encore de mots clés manuels, ceci est donc un exemple automatique (les niveaux de pertinence sont fictifs, mais les liens sont valables). Pour tester le nuage avec une page qui contient des mots définis manuellement, vous pouvez cliquer ici.

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher le nuage de mots clés.

 

Astuce pour imprimer les couleurs des cellules de tableaux : http://www.gaudry.be/ast-rf-450.html
Aucun commentaire pour cette page

© Ce document issu de l′infobrol est enregistré sous le certificat Cyber PrInterDeposit Digital Numbertection. Enregistrement IDDN n° 5329-4836
Document créé le 30/10/06 01:35, dernière modification le Vendredi 17 Juin 2011, 12:11
Source du document imprimé : http://www.gaudry.be/dotnet-rf-84h4y0ta.html Document affiché 5 fois ce mois de Mai.
St.Gaudry©07.01.02
Outils (masquer)
||
Recherche (afficher)
Recherche :

Utilisateur (masquer)
Navigation (masquer)
Apparence (afficher)
Stats (afficher)
15832 documents
452 astuces.
549 niouzes.
3099 definitions.
447 membres.
8115 messages.

Document genere en :
0,56 seconde

Mises à jour :
Mises à jour du site
Citation (masquer)
Notre vie est pour une grande part composée de rêves. Il faut les rattacher à l'action.

Anaïs Nin
 
l'infobrol
Nous sommes le Jeudi 31 Mai 2012, 00:50, toutes les heures sont au format GMT+1.00 Heure, heure d'été (+1)