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>>