Bonjour,
Voila une question toute bète comment comparrer le contenu de deux tableau ? Biensur, il est possible de tester leur taille et de comparrer les elements les uns a la suite des autres mais n'existe il pas de moyen plus rapide ?
Merci
Version imprimable
Bonjour,
Voila une question toute bète comment comparrer le contenu de deux tableau ? Biensur, il est possible de tester leur taille et de comparrer les elements les uns a la suite des autres mais n'existe il pas de moyen plus rapide ?
Merci
tu peux surcharger la méthode Equals et la mettre à ton gout.
Donc pas de solution offert par le framework ?
Sinon voila ma solution manuelle
http://www.friendsnippets.com/snippet/194/
euh mais ca fait quoi quand tu fais un equals pour comparer tes 2 tableaux? avec la methode standard du framework.
ty peux toujours essayer de comparer les byte de ton tableau :aie:
Plutot que comparer des T[], j'aurais comparé des IEnumerable<T>, c'est plus générique.
Des ICollection<T> plutôt, puisqu'il commence par comparer les tailles :)
Si tu souhaites comparer les tailles effectivement. Je n'ai pas parlé de conserver le code existant. Je disais que pour faire un comparateur générique, il vaudrait mieux utiliser IEnumerable, car dans l'absolu tu n'as pas besoin de la taille totale pour déterminer l'égalité de deux conteneurs.
Je considère deux énumérateurs comme tout ce dont on a besoin pour faire la comparaison.
Je me disais justement que par exemple, le constructeur de List<T> qui prend un IEnumerable, doit probablement essayer de voir si le paramètre est aussi une ICollection ou pas, histoire d'optimiser. C'est quand même mieux de savoir dès le début la taille qu'il faut s'allouer.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 public List(IEnumerable<T> collection) { if (collection == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.collection); } ICollection<T> is2 = collection as ICollection<T>; if (is2 != null) { int count = is2.Count; this._items = new T[count]; is2.CopyTo(this._items, 0); this._size = count; } else { this._size = 0; this._items = new T[4]; using (IEnumerator<T> enumerator = collection.GetEnumerator()) { while (enumerator.MoveNext()) { this.Add(enumerator.Current); } } } }
Merci pour vos idées, j'en ai modifié le snippets.