Foros del Web » Programación para mayores de 30 ;) » .NET »

Sobrecargando operadores VB. NET

Estas en el tema de Sobrecargando operadores VB. NET en el foro de .NET en Foros del Web. hola tengo: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código VB.NET: Ver original public class clase1 '''atributos y otros metodos       Public Shared Operator + ( ByVal primero ...
  #1 (permalink)  
Antiguo 22/11/2009, 17:02
Avatar de Bazookao  
Fecha de Ingreso: diciembre-2008
Ubicación: Mexico
Mensajes: 139
Antigüedad: 15 años, 5 meses
Puntos: 1
Pregunta Sobrecargando operadores VB. NET

hola tengo:
Código VB.NET:
Ver original
  1. public class clase1
  2. '''atributos y otros metodos
  3.      Public Shared Operator +(ByVal primero As clase1, ByVal segundo As clase1) As Object' lo tengo komo objet por que puede regresar un objeto de clase1 o de clase 2
  4.             if primero=segundo then
  5.                dim nVar as new clase1()
  6.                ''otras operaciones a la nuevo objeto
  7.                return nVar
  8.            else
  9.               dim otroObjeto as new clase2
  10.               ''otras operaciones a la nuevo objeto
  11.               return otroObjeto
  12.    end operator

todo esta bien cuando hacia mis pruebas
decia maso menos
Código VB.NET:
Ver original
  1. dim a as new clase1
  2. dim b as new clase1
  3. dim resultado as new clase2
  4. resultado=a+b'aqui esta bien por que los dos son diferentes
  5. ' por lo tanto regresa un objeto clase2
  6.  
  7.  
  8. 'pero se me ocurrio ponerle
  9. resultado=a+a
  10. ' como son iguales me manda un objeto clase1
  11. ' y me da un error de que clase1 no se puede convertir en clase2
  12. ' No se controlo InvalidCastExcepction
  13.  
  14.  
  15. 'asi que puse por lo mientras
  16. Try
  17.       resultado = a + a
  18.    Catch ex As Exception
  19.        b=a+a        
  20. End Try
  21.  
  22. 'pero no puedo star poniendo esto en cada uso de la suma de objetos clase1
  23. 'por que aveces es obligatorio que se  objeto clase2
  24. 'y en otros casos que se de clase1

que puedo hacer
como puedo hacer que "adivine" que si se va guardar el resultado en un objeto de clase1, mande un clase1 y si es de clase2 mande clase2

ayuda

de antemano gracias
  #2 (permalink)  
Antiguo 22/11/2009, 17:25
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Sobrecargando operadores VB. NET

Puedes usar del object q devuelves

Dim resultado as Object
....
resultaldo=a+a

resultado.GetType() y sabiendo el tipo que retorno hacer el casteo correspondiente.

ahora habria que ver si no necesitas implementar herencia de clases entre tu clase 1 y clase 2 para evitar ese tipo de problemas, no se tendriamos que saber un poco mas de tu problematica
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #3 (permalink)  
Antiguo 22/11/2009, 18:05
Avatar de Bazookao  
Fecha de Ingreso: diciembre-2008
Ubicación: Mexico
Mensajes: 139
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Sobrecargando operadores VB. NET

Pues no creo que haya herencia,desde mi "diseño" (rayitas n una hoja d papel) vi k mas bien era una composicion
de hecho en mi cosigo la clase2 solo tiene 2 atributos y uno es una lista de objetos de clase1
y la otra una lista de como se relacionen entre si
  #4 (permalink)  
Antiguo 22/11/2009, 18:12
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Sobrecargando operadores VB. NET

pues entonces usa el GetType para poder hacer el casting correspondiente.
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:28.