Como retornar un valor nulo para un valueType

24/11/2007 - 18:15 por daniel | Informe spam
Hola tengo una funcion que a un determinada accion correcta retorna un
estructura pero en caso de ue es accion no sea correcta como retornar la
estructura o un valor nulo. En MSDN los valueTypes no pueden se asignados un
valor nulo, asi que nose como retornar un valor nulo en la funcion cuando
esta retorna una estructura, por ejemplo:

struct Datos
{
...
}

Datos datos;

public Datos ObtenerDatos(condicion) // alguna parametro para establecer la
condicion
{
if ( condicion ) // correcta
{
// establecer los datos correspondientes a tipo de valor datos y
return datos;
}
// encaso de que no se cumpla la condicion
return null; // Error, es aqui donde no se que tipo de valor retornar
}

Si alguien me puede ayudar gracias.

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
25/11/2007 - 10:29 | Informe spam
"daniel" wrote in message
news:
Hola tengo una funcion que a un determinada accion correcta retorna un
estructura pero en caso de ue es accion no sea correcta como retornar la
estructura o un valor nulo. En MSDN los valueTypes no pueden se asignados
un valor nulo, asi que nose como retornar un valor nulo en la funcion
cuando esta retorna una estructura



Si estás usando el Framework versión 2.0 (o superior), tienes un
"Generic" que se denomina Nullable<T> que te permite convertir un ValueType
en un tipo que acepta nulls. El compilador de C# entiende una notación
abreviada para llamar a Nullable<T>, que consiste en agregar una
interrogación detrás del tipo: T?. Sus propiedades Value y HasValue te
permiten extraer el valor y comprobar si lo tiene. Por ejemplo:

struct Datos
{
...
}

Datos? datosDevueltos;
...
datosDevueltos= ObtenerDatos(...);
if (datosDevueltos.HasValue)
{
//Ha vuelto un valor:
Datos datos = datosDevueltos.Value;
}
...
public Datos? ObtenerDatos(condicion)
{
if ( condicion )
{
Datos? datos=new Datos(...); //Se asigna al .Value del Datos?
return datos;
}
return null; //Ahora el Datos? sí que lo admite
}
Respuesta Responder a este mensaje
#2 Alfredo Novoa
25/11/2007 - 15:03 | Informe spam
Hola Alberto,

On Sun, 25 Nov 2007 10:29:08 +0100, "Alberto Poblacion"
wrote:

Si estás usando el Framework versión 2.0 (o superior), tienes un
"Generic" que se denomina Nullable<T> que te permite convertir un ValueType
en un tipo que acepta nulls. El compilador de C# entiende una notación
abreviada para llamar a Nullable<T>, que consiste en agregar una
interrogación detrás del tipo: T?. Sus propiedades Value y HasValue te
permiten extraer el valor y comprobar si lo tiene. Por ejemplo:

struct Datos
{
...
}

Datos? datosDevueltos;
...
datosDevueltos= ObtenerDatos(...);
if (datosDevueltos.HasValue)
{
//Ha vuelto un valor:
Datos datos = datosDevueltos.Value;
}
...
public Datos? ObtenerDatos(condicion)
{
if ( condicion )
{
Datos? datos=new Datos(...); //Se asigna al .Value del Datos?
return datos;
}
return null; //Ahora el Datos? sí que lo admite
}




Lo que pasa es que esto es una chapuza de campeonato. Sería mucho
mejor hacer como el método TryGetValue de Dictionary.


Saludos
Alfredo
Respuesta Responder a este mensaje
#3 Alberto Poblacion
25/11/2007 - 16:54 | Informe spam
"Alfredo Novoa" wrote in message
news:
Lo que pasa es que esto es una chapuza de campeonato. Sería mucho
mejor hacer como el método TryGetValue de Dictionary.



Posiblemente, pero la pregunta original era "Cómo retornar un valor nulo
para un valueType", ante lo que respondo que "Encapsulando el ValueType en
un Nullable<T>". Lo cual no significa, necesariamente, que ante cualquier
caso en el que el programa deba responder a una situación de error, el mejor
método para informar del error sea devolver un null dentro de un ValueType.
Puede que sí o puede que no, dependerá de la situación concreta, pero no he
interpretado que el objetivo de la pregunta fuera dirimir esa cuestión de
diseño para este caso en particular.
Respuesta Responder a este mensaje
#4 daniel
25/11/2007 - 20:13 | Informe spam
Gracias Alberto por tu ayuda.

"Alberto Poblacion"
escribió en el mensaje de noticias
news:%
"daniel" wrote in message
news:
Hola tengo una funcion que a un determinada accion correcta retorna un
estructura pero en caso de ue es accion no sea correcta como retornar la
estructura o un valor nulo. En MSDN los valueTypes no pueden se asignados
un valor nulo, asi que nose como retornar un valor nulo en la funcion
cuando esta retorna una estructura



Si estás usando el Framework versión 2.0 (o superior), tienes un
"Generic" que se denomina Nullable<T> que te permite convertir un
ValueType en un tipo que acepta nulls. El compilador de C# entiende una
notación abreviada para llamar a Nullable<T>, que consiste en agregar una
interrogación detrás del tipo: T?. Sus propiedades Value y HasValue te
permiten extraer el valor y comprobar si lo tiene. Por ejemplo:

struct Datos
{
...
}

Datos? datosDevueltos;
...
datosDevueltos= ObtenerDatos(...);
if (datosDevueltos.HasValue)
{
//Ha vuelto un valor:
Datos datos = datosDevueltos.Value;
}
...
public Datos? ObtenerDatos(condicion)
{
if ( condicion )
{
Datos? datos=new Datos(...); //Se asigna al .Value del Datos?
return datos;
}
return null; //Ahora el Datos? sí que lo admite
}
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida