En SQL Server, puede usar la IsNull()
función para verificar si un valor es nulo y, si lo es, devolver otro valor. Ahora me pregunto si hay algo similar en C #.
Por ejemplo, quiero hacer algo como:
myNewValue = IsNull(myValue, new MyValue());
en vez de:
if (myValue == null)
myValue = new MyValue();
myNewValue = myValue;
Gracias.
c#
.net
sql-server
isnull
Infierno
fuente
fuente
this.BinaryExists = vModel.BinaryExists ?? 0;
athis.BinaryExists = vModel.BinaryExists ?? false;
.Lamentablemente, no hay equivalente al operador de fusión nula que funciona con DBNull; para eso, necesitas usar el operador ternario:
fuente
(object)oldValue ?? (object)DBNull.Value)
sería equivalente a((object)oldValue == null) ? (object)DBNull.Value : (object)oldValue
cuál es el problema que aborda la solución de Robert Rossney.fuente
new MyValue()
se ejecutará incluso cuandomyValue
no sea nulo y no sea necesario.Utilice el método Equals:
fuente
Para trabajar con DB Nulls, creé un montón para mis aplicaciones VB. Los llamo Cxxx2 ya que son similares a las funciones Cxxx integradas de VB.
Puedes verlos en mi proyecto de extensiones CLR
http://www.codeplex.com/ClrExtensions/SourceControl/FileView.aspx?itemId=363867&changeSetId=17967
fuente
Escribe dos funciones
Funcionan muy bien
fuente
He estado usando el siguiente método de extensión en mis tipos de DataRow:
uso:
Primero estoy verificando la existencia de la columna porque si ninguno de los resultados de la consulta tiene un valor no nulo para esa columna, el objeto DataTable ni siquiera proporcionará esa columna.
fuente
Utilice los métodos siguientes.
fuente
fuente
Esto se entiende a medias como una broma, ya que la pregunta es un poco tonta.
Este es un método de extensión, sin embargo, extiende System.Object, por lo que cada objeto que usa ahora tiene un método IsNull ().
Entonces puedes guardar toneladas de código haciendo:
en lugar del super cojo:
fuente
Object
objeto real sobre el cual operar, y si el objeto fuera Nada (precisamente el caso que está tratando de probar en esta Q) no había ninguna instancia para que la clase de extensión operara y, por lo tanto, sería lanzar una excepción NullObject.Object
VB. Vea esta pregunta SO o esta publicación de blog .