valor tipos referencia por pasar pasaje parametros parametro funciones como clase argumentos c# .net .net-3.5 set hashset

pasar - tipos por valor y por referencia c#



¿Cómo se determina si dos HashSets son iguales(por valor, no por referencia)? (2)

IEqualityComparer<HashSet<int>> comp = HashSet<int>.CreateSetComparer(); Console.WriteLine("CreateSetComparer set1 == set2 : {0}", comp.Equals(set1, set2)); // or bool areEqual = HashSet<int>.CreateSetComparer().Equals(set1, set2);

Estoy tratando de determinar si dos objetos HashSet en .NET 3.5 (C #) son conjuntos iguales, es decir , contienen los mismos valores. Esto parece algo que obviamente uno querría hacer, pero ninguna de las funciones provistas parece brindarle esta información.

La forma en que puedo pensar para hacer esto es comprobando si el recuento de los dos conjuntos es igual y un conjunto es un subconjunto (no apropiado) del otro. Creo que la única forma en que puede suceder es si son conjuntos iguales. Código de ejemplo:

HashSet<int> set1 = new HashSet<int>(); set1.Add(1); set1.Add(2); set1.Add(3); HashSet<int> set2 = new HashSet<int>(); set2.Add(1); set2.Add(2); set2.Add(3); if(set1.Count == set2.Count && set1.IsSubsetOf(set2)) { // do something }

¿Esto siempre funcionaría? ¿Hay una mejor manera? ¿Por qué HashSet no tiene una public bool IsEqualSetWith() ?


Mire el método SetEquals .

my_hashset.SetEquals(other);