2009-02-23 7 views
4

Possible en double:
C# associative arrayC# équivaut à un tableau associatif php?

ive a décidé d'apprendre C# récemment. J'ai fait du php avant. je vois C# a des dictionnaires. thats équivalent à un tableau associatif en PHP à droite? autant que je peux dire que le dictionnaire ne maintient pas l'ordre d'insertion comme les tableaux associatifs php droite? Y at-il un autre équivalent que je devrais utiliser si l'ordre d'insertion est important?

grâce

Répondre

4

Dictionnaire ne garantie pour préserver l'ordre d'insertion, donc pas: vous ne pouvez pas compter sur ce (bien qu'il soit difficile de le forcer à briser ce). Si l'ordre d'insertion est important, vous devez créer une classe hybride, en encapsulant éventuellement un List<T> pour l'ordre inséré et un Dictionary<TKey,T> pour l'indexation.

+0

Java en possède une (LinkedHashMap). Il n'y a vraiment pas d'équivalent en C#? – cletus

+0

@cletus: Non, il n'y a vraiment pas d'équivalent dans le core .NET framework. @ Marc: Ce n'est pas si difficile de le forcer. Je ne peux pas m'en souvenir, certes ... je crois que c'est dans un post quelque part. –

+0

Si vous avez tendance à commander avec une hashtable, cela implique que votre fonction de hachage est de la merde et que votre O (1) est en danger. vous devriez avoir près de la position d'insertion aléatoire pour n'importe quel seau ... – ShuggyCoUk

2

Vous voudrez peut-être vérifier Power Collections. Je crois qu'ils ont des implémentations qui répondent à vos besoins.

1

Il existe une classe OrderedDictionary dans l'espace de noms System.Collections.Specialized, mais elle n'est malheureusement pas générique.

Il n'existe pas de classe de dictionnaire générique intégrée qui préserve l'ordre d'insertion. Si l'ordre d'insertion est vraiment important, vous devrez lancer le vôtre ou vérifier l'implémentation d'une tierce partie (comme l'a suggéré Marc & Kent).

1

Les tableaux associatifs PHP sont convertis en type XmlRpcStruct. Voir le XML-RPC spec.

En C#, utilisez XmlRpcStruct ou struct pour représenter les tableaux associatifs PHP.

Ceci est une solution testée, pas une suggestion désinvolte.

Questions connexes