Hacer ke una Enum o una estructura sea nulable

09/11/2007 - 03:15 por jcpc91 | Informe spam
hola alguién sabe como puedo hacer ke una estructura o el Enum sea
nulable
lo ke sucede es ke tengo esto en una clase Persona y una "estructura
del tipo Enum"

public enum Sexo
{
Masculino = 'M',
Femenino = 'F',
}

esta es mi clase persona con su propiedad
public class Persona{

/*Aqui tengo declarada una variable privada del tipo entero ke acepta
valores null
private int? sexo= null;

/*aqui tengo una propiedad del tipo Enum llamada sexo que define el
sexo de la persona que intento declararla como nulable osea ke admite
valores null con el signo de interrogación lo marco*/
public Sexo? Sexo
{

get
{
if (sexo == 1)
{
return Sexo.Masculino;
}
else if (sexo == 2)
{
return Sexo.Femenino;
}
/*en este else if me da error porke obviamente no puede retornar null
porke es un Enum ke define dos variables
else if (sexo == null)
{
return null;
}
}
set
{
if (value == Sexo.Femenino)
{
this.sexo = 2;
}
else if (value == Sexo.Masculino)
{
this.sexo = 1;
}
else if(value == null)
{
this.sexo = null;
}
}
}
}

Lo anterior me da error porke creo ke el enum ke creo ke es una
estructura necesita ser declarada nulable cuando intento compilar me
marca el siguiente error
'System.Nullable<aveprevia.Sexo>' does not contain a definition for
'Masculino'

no le entiendo porke dice ke no contiene una definición para Masculino
si la tengo declarada

creo ke tenogo ke hacerle algo al Enum pero no sé

gracias por sus respuestas
 

Leer las respuestas

#1 Alberto Poblacion
09/11/2007 - 09:56 | Informe spam
wrote in message
news:
[...]
me marca el siguiente error
'System.Nullable<aveprevia.Sexo>' does not contain a definition for
'Masculino'



El problema es que has llamado a tu propiedad con el mismo nombre que el
enum, con lo cual el compilador se confunde. A continuación te pongo tu
código corregido, cambiándole el nombre a la propiedad y alguna otra cosilla
para que compile sin errores:

public enum Sexo
{
Masculino = 'M',
Femenino = 'F',
}

class Prueba
{
private int? sexo = null;
public Sexo? PropiedadSexo
{

get
{
if (sexo.Value == 1)
{
return Sexo.Masculino;
}
else if (sexo.Value == 2)
{
return Sexo.Femenino;
}
return null;
}
set
{
if (value.Value == Sexo.Femenino)
{
this.sexo = 2;
}
else if (value.Value == Sexo.Masculino)
{
this.sexo = 1;
}
else
{
this.sexo = null;
}
}
}
}

Preguntas similares