Convertir esta sentencia a C#

28/08/2007 - 21:19 por Limberg | Informe spam
If IsNothing(obj) Or obj Is DBNull.Value Then

Atte.
Limberg.

Preguntas similare

Leer las respuestas

#1 Luis Miguel Blanco
28/08/2007 - 22:04 | Informe spam
Hola Limberg

Prueba a ver si te funcionara lo siguiente:

if (obj == null | obj == DBNull.Value)
{
//
}

Espero que te sirva.
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"Limberg" wrote:

If IsNothing(obj) Or obj Is DBNull.Value Then

Atte.
Limberg.



Respuesta Responder a este mensaje
#2 Alberto Poblacion
29/08/2007 - 08:01 | Informe spam
"Luis Miguel Blanco" wrote in
message news:
if (obj == null | obj == DBNull.Value)



Aunque en este caso concreto no importa mucho, es mejor acostumbrarse a
hacerlo asi:

if (obj==null || obj is DBNull.Value)

En primer lugar hemos puesto el "o lógico" (||) en lugar del "o binario"
(|), y luego hemos puesto el operador "is" en lugar de la comparación "==".
El "is" devuelve true si "obj" es de la clase DBNull.Value o cualquier clase
hija de la misma, mientras que el "==" aplicado a la mayor parte de los
objetos solo devuelve true si los dos apuntan a la misma dirección en
memoria (es decir, llama al Equals de Object, que si no tiene un override, a
su vez llama a ReferenceEquals).
Respuesta Responder a este mensaje
#3 Luis Miguel Blanco
29/08/2007 - 08:20 | Informe spam
Hola Alberto

Muchas gracias por la aclaración. Siempre se aprenden cosas interesantes de
un gran maestro 8-)

Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"Alberto Poblacion" wrote:

"Luis Miguel Blanco" wrote in
message news:
> if (obj == null | obj == DBNull.Value)

Aunque en este caso concreto no importa mucho, es mejor acostumbrarse a
hacerlo asi:

if (obj==null || obj is DBNull.Value)

En primer lugar hemos puesto el "o lógico" (||) en lugar del "o binario"
(|), y luego hemos puesto el operador "is" en lugar de la comparación "==".
El "is" devuelve true si "obj" es de la clase DBNull.Value o cualquier clase
hija de la misma, mientras que el "==" aplicado a la mayor parte de los
objetos solo devuelve true si los dos apuntan a la misma dirección en
memoria (es decir, llama al Equals de Object, que si no tiene un override, a
su vez llama a ReferenceEquals).



Respuesta Responder a este mensaje
#4 Alhambra Eidos Kiquenet
30/08/2007 - 14:18 | Informe spam
Aunque en este caso concreto no importa mucho, es mejor acostumbrarse a
hacerlo asi:

if (obj==null || obj is DBNull.Value)

En primer lugar hemos puesto el "o lógico" (||) en lugar del "o binario"
(|), y luego hemos puesto el operador "is" en lugar de la comparación "==".
El "is" devuelve true si "obj" es de la clase DBNull.Value o cualquier clase
hija de la misma, mientras que el "==" aplicado a la mayor parte de los
objetos solo devuelve true si los dos apuntan a la misma dirección en
memoria (es decir, llama al Equals de Object, que si no tiene un override, a
su vez llama a ReferenceEquals).




Similar a este caso, tengo u n método de capa de acceso a datos tal que así:

public bool CampoTieneValorNulo(string nombreCampo)
{
//return Convert.IsDBNull( datareader[nombreCampo] );
return (datareader[nombreCampo] == DBNull.Value);
}

En este caso, lo conveniente también seria

return (dr[campo] is DBNull.Value);

o dr[campo] is DBNull?

Pues el operador is también se aplica a propiedades (DBNull.Value) y no sólo
a clases (tipos) (DBNull) ??

saludos.
Respuesta Responder a este mensaje
#5 Octavio Hernandez
02/09/2007 - 18:24 | Informe spam
Hola, Alberto!

El problema es que Value no es una clase, sino un campo estático de la clase
DBNull. Por tanto, no se puede utilizar "is" ahí.
La manera correcta de hacer la segunda comparación es:

obj == DBNull.Value

Slds - Octavio
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida