Vorrei impedire ulteriori elaborazioni su un oggetto se è nullo.
Nel seguente codice controllo se l'oggetto è nullo da uno dei due:
if (!data.Equals(null))
e
if (data != null)
Tuttavia, ricevo un NullReferenceExceptionat dataList.Add(data). Se l'oggetto era nullo, non avrebbe mai dovuto nemmeno entrare nello ifstato!
Pertanto, sto chiedendo se questo è il modo corretto di verificare se un oggetto è null:
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;
}
Se questo è il modo corretto di verificare se l'oggetto è nullo, cosa sto facendo di sbagliato (come posso impedire ulteriori elaborazioni sull'oggetto per evitare NullReferenceException)?
!= nullnei tuoi controlli null. .Equalsgenererà sempre un'eccezione se l'oggetto è null.
throw e;non è molto meglio. throw;, d'altra parte ...
e.ToString()produrrà una stringa che include non solo il messaggio di errore, ma anche quelli di tutti InnerExceptionse la traccia dello stack. Quindi è una specie di messaggio di eccezione molto pesante. Se (giustamente!) Vuoi conservare queste informazioni e mantenerne la posizione, usa semplicemente throw;.
throw e;controthrow new Exception(e.ToString());