Me gustaría evitar un mayor procesamiento en un objeto si es nulo.
En el siguiente código verifico si el objeto es nulo por cualquiera de los dos:
if (!data.Equals(null))
y
if (data != null)
Sin embargo, recibo un NullReferenceExceptionat dataList.Add(data). Si el objeto era nulo, ¡nunca debería haber ingresado en la ifdeclaración!
Por lo tanto, pregunto si esta es la forma correcta de verificar si un objeto es nulo:
public List<Object> dataList;
public bool AddData(ref Object data)
bool success = false;
try
{
// I've also used "if (data != null)" which hasn't worked either
if (!data.Equals(null))
{
//NullReferenceException occurs here ...
dataList.Add(data);
success = doOtherStuff(data);
}
}
catch (Exception e)
{
throw new Exception(e.ToString());
}
return success;
}
Si esta es la forma correcta de verificar si el objeto es nulo, ¿qué estoy haciendo mal (¿cómo puedo evitar un mayor procesamiento en el objeto para evitar la NullReferenceException)?
!= nullen sus cheques nulos. .Equalssiempre lanzará una excepción si el objeto es nulo.
throw e;no es mucho mejor. throw;, por otro lado ...
e.ToString()producirá una cadena que incluye no solo el mensaje de error, sino también los de todos InnerExceptionsy el seguimiento de la pila. Entonces ese es un tipo de mensaje de excepción muy pesado. Si usted (¡con razón!) Desea preservar esta información y mantenerla donde pertenece, úsela simplemente throw;.
throw e;versusthrow new Exception(e.ToString());