如果对象为null,我想防止对其进行进一步处理。
在以下代码中,我通过以下任一方法检查对象是否为空:
if (!data.Equals(null))
和
if (data != null)
不过,我收到NullReferenceException
的dataList.Add(data)
。如果对象为null,则它甚至都不应输入if
-statement!
因此,我问这是否是检查对象是否为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;
}
如果这是检查对象是否为null的正确方法,那我在做什么错(如何防止对该对象进行进一步处理以避免NullReferenceException)?
!= null
在null检查中使用。 .Equals
如果对象为null,将始终引发异常。
throw e;
并不好。throw;
,另一方面…
e.ToString()
将产生一个不仅包含错误消息,而且还包含所有错误消息InnerExceptions
和堆栈跟踪的字符串。因此,这是一种非常繁琐的异常消息。如果您(正确!)想要保留此信息并保留它的位置,请简单地使用throw;
。
throw e;
vsthrow new Exception(e.ToString());