Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Senior++ en 1 Enero 2012, 17:29 pm



Título: [Duda] Las enumeraciones (Enum) (Solucionado)
Publicado por: Senior++ en 1 Enero 2012, 17:29 pm
Edito: A ver ... los enums están pensados para evitar "números mágicos" en el código. La idea es evitar código como este:

Public Sub EjecutaAccion(ByVal opciones As Integer)

If opciones = 1 Then
'Haz algo
ElseIf opciones = 3 Then
'haz algo diferente
ElseIf opciones = 4 Then
'haz otra cosa

'...

End If

End Sub

Este código es difícil de comprender y mantener, especialmente sin documentación, ya que al cabo del tiempo se olvidan la descripción de los valores. En cambio el mismo código con enums:

Public Enum Opciones
Ninguna = 0
Visualizar = 1
Editar = 2
Borrar = 4
'...
End Enum

Public Sub EjecutaAccion(ByVal eOpciones As Opciones)

If eOpciones = Opciones.Visualizar Then
'Haz algo
ElseIf eOpciones = (Opciones.Visualizar Or Opciones.Editar) Then
'haz algo diferente
ElseIf eOpciones = Opciones.Borrar Then
'haz otra cosa

'...

End If

End Sub

Con los enums el programa casi se auto-documenta y se facilita mucho su comprensión y mantenimiento.


Pero sigo sin entender!, ese código esta mal da error en: Public Sub EjecutaAccion(ByVal eOpciones As Opciones)

Porfavor alguien podría poner un claro ejemplo?


Título: Re: [Duda] Las enumeraciones (Enum)
Publicado por: Jenhyal en 1 Enero 2012, 22:19 pm
Hola, SixToex (Agares).

A ver si te sirven los ejemplos de elguille (por cierto, un máquina en todo esto):

http://www.elguille.info/NET/cursoVB.NET/glosarioNET.htm#Enumeraciones


Título: Re: [Duda] Las enumeraciones (Enum)
Publicado por: seba123neo en 1 Enero 2012, 22:37 pm
debes estar llamando mal a la funcion, por ejemplo esto funciona bien:

Código
  1. Public Enum Opciones
  2.    Ninguna = 0
  3.    Visualizar = 1
  4.    Editar = 2
  5.    Borrar = 4
  6. End Enum
  7.  
  8. Private Sub EjecutaAccion(ByVal eOpciones As Opciones)
  9.  
  10.    If eOpciones = Opciones.Visualizar Then
  11.        MsgBox "Visualizar"
  12.    ElseIf eOpciones = Editar Then
  13.        MsgBox "Editar"
  14.    ElseIf eOpciones = Opciones.Borrar Then
  15.        MsgBox "Borrar"
  16.    ElseIf eOpciones = Opciones.Ninguna Then
  17.        MsgBox "Ninguna"
  18.    End If
  19.  
  20. End Sub
  21.  
  22. Private Sub Form_Load()
  23.    Call EjecutaAccion(Ninguna)
  24. End Sub

y si la llamas con el numero:

Código
  1. Call EjecutaAccion(0)

tambien funciona.

saludos.


Título: Re: [Duda] Las enumeraciones (Enum)
Publicado por: Senior++ en 2 Enero 2012, 13:11 pm
Muchas gracias, ya lo entendi  :xD

Saludos ::)