web-dev-qa-db-fra.com

Existe-t-il une version de la classe Tuple dont les propriétés Items ne sont pas en lecture seule et peuvent être définies?

Je veux savoir s'il existe une version intégrée de la classe Tuple dont les propriétés Items ne sont pas readonly et peuvent être définies.

Ou quelqu'un peut-il me fournir une telle version?

Je recherche une solution qui implémente les fonctions de base de la classe Tuple, (Equals, GetHashCode)

32
GianT971

Non, comme mentionné un Tuple<> est destiné à être immuable.

J'utilise une classe Pair personnalisée si j'ai besoin d'un type mutable qui fait la même chose, bien que dans l'esprit d'embrasser les concepts de fonction, j'essaie de ne pas l'utiliser.

namespace StackOverflow.Helpers
{
    public class Pair<T1, T2>
    {
        public T1 First { get; set; }
        public T2 Second { get; set; }
    }
} 
62
Ritch Melton

Étant donné que GetHashCode doit renvoyer le même code de hachage pour les instances égales et doit être immuable après la construction, toute implémentation Tuple à usage général qui remplace Equals et GetHashCode aura nécessairement des propriétés en lecture seule pour les éléments encapsulés.

Il est donc peu probable que vous trouviez ce que vous cherchez. Je ne comprends pas pourquoi vous voudriez à la fois la mutabilité et les remplacements Equals/GetHashCode, mais si vous le faites et comprenez les risques, vous devrez probablement lancer le vôtre.

5
Joe