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

Se puede simplificar este codigo?

Estas en el tema de Se puede simplificar este codigo? en el foro de .NET en Foros del Web. Existe manera de simplificar este pedazo de codigo que solo adjunto parcialmente debido a su larga extensión? Código: Public Sub AEscojer(ByVal Escojido As String) If ...
  #1 (permalink)  
Antiguo 21/06/2012, 14:43
 
Fecha de Ingreso: junio-2012
Mensajes: 1
Antigüedad: 12 años, 5 meses
Puntos: 0
Se puede simplificar este codigo?

Existe manera de simplificar este pedazo de codigo que solo adjunto parcialmente debido a su larga extensión?
Código:
    Public Sub AEscojer(ByVal Escojido As String)
        If Escojido = "Caracol" Then Caracol()
        If Escojido = "Carcasa" Then Carcasa()
        If Escojido = "Manzana" Then Manzana()
        If Escojido = "Funda" Then Funda()
        If Escojido = "Raton" Then Raton()
        If Escojido = "Pila" Then Pila()
        If Escojido = "Impermeable" Then Impermeable()
'....
'....
'....
'....
    End Sub
  #2 (permalink)  
Antiguo 21/06/2012, 15:35
 
Fecha de Ingreso: noviembre-2011
Ubicación: Huancayo
Mensajes: 70
Antigüedad: 13 años
Puntos: 6
Respuesta: Se puede simplificar este codigo?

Hola,
de momento solo se me ocurre:
Código PHP:

Select 
Case <condición>
    Case <
opción 1>
        
'...
    Case <opción 2>
        '
...
    Case Else
        ...
End Select 
__________________
________________
CompuInicio.com
Iniciando Bien . . .
  #3 (permalink)  
Antiguo 21/06/2012, 16:27
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 6 meses
Puntos: 344
Respuesta: Se puede simplificar este codigo?

Buenas,

Puedes aprovechar los delegados de .NET y la clase Dictionary para ello:

Código vb:
Ver original
  1. Module Module1
  2.  
  3.     Dim functions As New Dictionary(Of String, Action) From {
  4. {"Caracol", AddressOf Caracol}, {"Carcasa", AddressOf Carcasa}}
  5.  
  6.  
  7.     Public Sub Caracol()
  8.  
  9.         Console.WriteLine("Hola Caracol")
  10.  
  11.     End Sub
  12.  
  13.     Public Sub Carcasa()
  14.  
  15.         Console.WriteLine("Hola Carcasa")
  16.     End Sub
  17.  
  18.     Sub Main()
  19.         AEscojer(Console.ReadLine)
  20.     End Sub
  21.  
  22.    
  23.  
  24.     Public Sub AEscojer(ByVal Escojido As String)
  25.  
  26.         If functions.ContainsKey(Escojido) Then
  27.             functions(Escojido)()
  28.         End If
  29.     End Sub
  30.  
  31. End Module

Otra forma sería mediante Reflexión (puedes ejecutar un método teniendo el nombre del método como string), pero creo que con lo de arriba es suficiente
  #4 (permalink)  
Antiguo 22/06/2012, 08:09
Avatar de cronopiomx  
Fecha de Ingreso: mayo-2012
Ubicación: Programing Cloud
Mensajes: 282
Antigüedad: 12 años, 6 meses
Puntos: 28
Respuesta: Se puede simplificar este codigo?

Usa las TablaHash o Dictionary .NET, es lo mejor y mas rapido que existe es de orden logaritmico.

s2
crono

Etiquetas: simplificar
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 16:44.