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 NullReferenceException
at dataList.Add(data)
. Se l'oggetto era nullo, non avrebbe mai dovuto nemmeno entrare nello if
stato!
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)?
!= null
nei tuoi controlli null. .Equals
genererà 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 InnerExceptions
e 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());