Visual Basic.NET - Comparar Muchas Variables

 
Vista:

Comparar Muchas Variables

Publicado por Benjamin (3 intervenciones) el 22/07/2010 23:42:33
Saludos, tengo 1 clase de tipo alumno la cual tiene 30 variables de tipo string y 10 de tipo int.

Declaro dos instancias de esa clase

Dim A as Alumno = new Alumno();
Dim B as Alumno = new Alumno();

Y deseo comparar cada una de sus variables haber si alguna es diferente, para evitar hacer esto:

Function VerificarCambios( ) as Boolean
if (A.Nombre <> B.Nombre)
return True

if (A.Apellidos <> B.Apellidos)
return True
.........
.........
etc.

Hay alguna forma de comparar todas las variables de ambas instancias, algo asi como con un ciclo recorrer todas las variables para no tener que comparar variable por variable.

Gracias, cualquier ayuda o aporte es bienvenido.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Comparar Muchas Variables

Publicado por Damian (824 intervenciones) el 23/07/2010 14:57:57
Puedes probar con la instrucción For Each. Esta es asi:

For Each element [ As datatype ] In group
[ statements ]
[ Exit For ]
[ statements ]
Next [ element ]

En la ayuda del visual tiene la explicación del mismo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de roger

RE:Comparar Muchas Variables

Publicado por roger (186 intervenciones) el 23/07/2010 21:33:35
puedes utilizar reflection para llevar a cabo lo que necesitas, seria algo como

Function VerificarCambios( ) as Boolean

For Each info As PropertyInfo In A.GetType().GetProperties()
valor = info.GetValue(A, Nothing)
valor2 = info.GetValue(B, Nothing)
If (valor = valor2) Then
Return True
End If
Next
end function

Nota: Tienes que hacer un importa a system.reflection

Cualquier duda nos comentas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Comparar Muchas Variables

Publicado por Benjamin (3 intervenciones) el 23/07/2010 22:19:15
Gracias de que tipo tendrían que ser valor1 y valor2, podrían ser string y hacer la conversion al info.GetValue?

¿Que pasaria si trato de comparar una imagen?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de roger

RE:Comparar Muchas Variables

Publicado por roger (186 intervenciones) el 23/07/2010 22:33:54
en la prueba que yo hice los puse como object, internamente reflection al traer el valor los identificaba como string, puedes hacer la prueba con un tipo de dato mas complejo.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de roger

RE:Comparar Muchas Variables

Publicado por roger (186 intervenciones) el 23/07/2010 23:20:33
pero no te debe valer la comparación == para tipos complejos, por ejemplo si comparas dos instancias de la clase por mas que tengan los mismos valores en sus propiedades, deben ser distintas, son dos referencias de memoria distintas. La solucion creo que pasa por implementar una interfaz como IComparable o IEquatable en las clases que desarrollamos, con el fin de establecer bajo que condicion un objeto seria igual a otro, pero para objetos propios de .net supongo que no sería posible

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar