elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  [C#] [VB.NET] Enums con valores duplicados
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C#] [VB.NET] Enums con valores duplicados  (Leído 2,892 veces)
Eleкtro
Ex-Staff
*
Conectado Conectado

Mensajes: 9.878



Ver Perfil
[C#] [VB.NET] Enums con valores duplicados
« en: 21 Octubre 2013, 11:03 am »

A ver, tengo un pequeño lio mental con el método [Enum].Parse, en el cual, según nos cuenta el MSDN, se le puede pasar un parámetro de IgnoreCase:

Citar
Parse(Type, String, Boolean)

Bien, esto en un principio para mi no tiene lógica alguna, teniendo en cuenta que en VB.NET no se puede escribir una enumeración con nombres duplicados de esta manera:

Código
  1. Private Enum Test
  2.    A
  3.    a
  4. End Enum

Pero según he leido, en C# si que es totálmente válido ese tipo de Enums, y entonces esto ya comienza a tener algo de sentido.

El caso es que según me han comentado también sería posible compilar ese tipo de enumeraciones en VB.NET, pero no me han especificado de que manera se podría hacer,
Aunque yo no estoy nada interesado en crear una Enum con valores duplicados la verdad, pero si esto es así de cierto entonces podría significar que las Enums internas del Framework podrían contener nombres de valores "duplicados"?

...en VB.NET, supongamos que hemos escrito una función genérica para parsear un valor de una Enum:
Código
  1. Private Function Enum_Parser(Of T)(Value As Object) As T
  2.  
  3.    Try
  4.        Return [Enum].Parse(GetType(T), Value, True)
  5.  
  6.    Catch ex As ArgumentException
  7.        Throw New Exception("Value not found")
  8.  
  9.    Catch ex As Exception
  10.        Throw New Exception(String.Format("{0}: {1}}", ex.Message, ex.StackTrace))
  11.  
  12.    End Try
  13.  
  14. End Function

La pregunta es, ¿existe algún riesgo de que la función devuelva un falso positivo?.

O en otras palabras, ¿alguna de las Enums del Framework contiene valores que se diferencian en el StringCase pudiendo dar así un falso positivo?

También me atrevería a preguntar porque alguien sería tan estúpido de poner nombres duplicados en una Enum... pero bueno, imagino que habrá razones válidas y quizás no serán tan estúpidas como pienso.


« Última modificación: 21 Octubre 2013, 11:07 am por EleKtro H@cker » En línea



Keyen Night


Desconectado Desconectado

Mensajes: 496


Nothing


Ver Perfil
Re: [C#] [VB.NET] Enums con valores duplicados
« Respuesta #1 en: 9 Noviembre 2013, 18:30 pm »

Por estrictas normas de globalización que sigue la plataforma .Net, las comparaciones internas de texto se realizan por comparación ordinal y respetando el uso mayúsculas y minúsculas. En VB.NET no se puedan repetir los nombres sin importar el case, es sólo debido a su sintaxis, y no tiene nada que ver con la plataforma como tal, mientras que en C# es posible nombrar 2 variables de la misma manera, si su case es diferente. Es literalmente imposible, que el parser de .Net obtenga un falso positivo, ya que es ambos casos (tanto en VB.NET como en C#), no puedes invocar 2 variables con el mismo nombre; es totalmente válido este enum por ejemplo:

Código
  1.        public enum ejemplo : int
  2.        {
  3.            azul,
  4.            AZUL,
  5.            AZUl
  6.        }

El único problema que tiene, es que como somos humanos, tenemos la necesidad de que todo se vea simétrico, para para la computadora esos son 3 valores que no tienen absolutamente nada que ver uno con el otro.


En línea

La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...
Eleкtro
Ex-Staff
*
Conectado Conectado

Mensajes: 9.878



Ver Perfil
Re: [C#] [VB.NET] Enums con valores duplicados
« Respuesta #2 en: 10 Noviembre 2013, 18:45 pm »

@Keyen Night gracias

Cierro el tema.
En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Tres monitores, 2 duplicados
Hardware
raul338 2 2,988 Último mensaje 3 Noviembre 2012, 17:49 pm
por raul338
Error en org.apache.commons.lang.enums al programar en Android
Java
P4nd3m0n1um 0 1,353 Último mensaje 26 Noviembre 2012, 21:45 pm
por P4nd3m0n1um
Clase con Enums
Java
Baal_30 6 3,634 Último mensaje 12 Abril 2015, 00:18 am
por Baal_30
Enums inside of Structs,compile error
Programación C/C++
aurquiel 2 1,629 Último mensaje 26 Julio 2018, 14:39 pm
por aurquiel
enums heredados ?
Programación C/C++
digimikeh 1 1,883 Último mensaje 16 Octubre 2019, 21:52 pm
por ThunderCls
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines