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

Preguntas similare

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;
}
}
}
}
Respuesta Responder a este mensaje
#2 Alberto Poblacion
09/11/2007 - 10:03 | Informe spam
En un mensaje anterior dije:
[...]
get
{
if (sexo.Value == 1)
{
return Sexo.Masculino;
}
else if (sexo.Value == 2)
{
return Sexo.Femenino;
}
return null;
}



Perdón, esto dará un error en tiempo de ejecución al preguntar por el
.Value si la variable viene vacía inicialmente. Primero hay que meter un
"if" que pregunte por "sexo.HasValue". Y lo mismo en el "set".
Respuesta Responder a este mensaje
#3 Octavio Hernandez
09/11/2007 - 10:26 | Informe spam
¿Y para qué necesitas el entero? Bastaría con:

public enum Sexo { Masculino, Femenino }

public class Persona
{
// otros miembros

private Sexo? sexo;

public Sexo? Sexo {
get { return sexo; }
set { sexo = value; }
}
}

Y ya está. Dada una Persona p, podrás hacer:

p.Sexo = Sexo.Masculino;
p.Sexo = Sexo.Femenino;
p.Sexo = null;

Slds - Octavio



wrote in message
news:
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
Respuesta Responder a este mensaje
#4 jcpc91
09/11/2007 - 16:35 | Informe spam
Ok men gracias ha sido de gran ayuda y ke raro ke ese error no me
haya marcado antes de kerer hacer nulable mi propiedad pero bueno y
para la persona ke me pregunta ke para ke necesito el entero lo ke
sucede eske Sexo representa a un campo de la base de datos ke tiene
como opciones
1: Masculino
2: Femenino
y admite valores NULL para representar a un sexo no determninado y
para eso me sirve en el diseño de mi clase los usuarios osea los otros
desarrolladores ke hagan uso de mi clase Persona lo ke van a ver es la
propiedad del tipo Enum pero internamente lo ke ellos especifican se
convierte por decirlo así a una representación en entero ke al fin ese
entero es el ke se envía a la base de datos

y gracias por su ayuda
Respuesta Responder a este mensaje
#5 Bela Istok
09/11/2007 - 17:11 | Informe spam
Los enums son enteros y pueden ir y venir de base de datos sin problema.

Saludos,

Bela Istok
wrote in message
news:
Ok men gracias ha sido de gran ayuda y ke raro ke ese error no me
haya marcado antes de kerer hacer nulable mi propiedad pero bueno y
para la persona ke me pregunta ke para ke necesito el entero lo ke
sucede eske Sexo representa a un campo de la base de datos ke tiene
como opciones
1: Masculino
2: Femenino
y admite valores NULL para representar a un sexo no determninado y
para eso me sirve en el diseño de mi clase los usuarios osea los otros
desarrolladores ke hagan uso de mi clase Persona lo ke van a ver es la
propiedad del tipo Enum pero internamente lo ke ellos especifican se
convierte por decirlo así a una representación en entero ke al fin ese
entero es el ke se envía a la base de datos

y gracias por su ayuda
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida