CLARISIMO!!!!! 
Muchisimas gracias!

From: Carlos Peix 
Sent: Monday, February 17, 2014 9:29 PM
To: puntonet@mug.org.ar 
Subject: [puntonet] equals

Tal como dice Gabriel, estas comparando dos referencias distintas. Y porque eso 
significa que no son iguales? 

C# es orientado a objetos, List<> hereda, en ultima instancia, de Object. La 
clase object define el metodo Equals y su implementacion, la mas basica, dice 
que si la direccion en memoria de los objetos coincide, entonces son iguales, 
si no, no. Esto, en otras palabras, quiere decir que si ambos objetos son la 
misma instancia son iguales.

Muchas clases que heredan de Object sobrecargan ese metodo, por ejemplo, String 
o Int32 y en ese metodo ponen sus propia logica de comparacion.

Es evidente que List<> ni niguna de las superclases sobrecarga ese método, 
entre otras cosas, porque no es trivial la comparacion de colecciones. Los 
elementos importan? el orden? etc...

Podrias hacer dos cosas: a) un extension method Equals o b) heredar (o mejor, 
encapsular) a List<> y escribir tu propio metodo Equals.

Si algo no se entendió, por favor volve a preguntar.

----------------------------------
Carlos Peix





2014-02-17 14:57 GMT-06:00 Ing. Roxana Leituz <roxanalei...@yahoo.com.ar>:

  consulta.. porque no entiendo.., tengo dos listas genéricas de string.. uso 
equals para compararlas, le cargo los mismos datos..pero me da falso?? no 
debería comparar por valor??
  ejemplo
  List<string> lista1 = new List<string>();
           List<string> lista2 = new List<string>();
           for (int i = int.Parse(PuntNumI.Text); i <= 
int.Parse(PuntNumFin.Text); i += int.Parse(PuntNumInt.Text))
           {
               lista1.Add(i.ToString());
               lista2.Add(i.ToString());
           }

  if (lista1.Equals(lista2))
             {
                 Response.Write("iguales");
             }
             else
                 Response.Write("dif");

  primero eran valores iguales de dos controles diferentes..dije bueno..que 
hago mal..entonces probé con los mismos... y false siempre, en que estoy 
metiendo la pata? o es que solo compara por referencia??
  muchas gracias!!

<<wlEmoticon-smilewithtongueout[1].png>>

Responder a