Boşsa, bir nesne üzerinde daha fazla işlem yapılmasını önlemek istiyorum.
Aşağıdaki kodda nesnenin ikisinden biri tarafından boş olup olmadığını kontrol ediyorum:
if (!data.Equals(null))
ve
if (data != null)
Ancak, bir NullReferenceExceptionat alırım dataList.Add(data). Nesne null olsaydı, asla if-statement!
Bu nedenle, bunun bir nesnenin boş olup olmadığını kontrol etmenin uygun bir yolu olup olmadığını soruyorum:
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;
}
Nesnenin null olup olmadığını kontrol etmenin doğru yolu buysa, ne yapıyorum (NullReferenceException özelliğini önlemek için nesne üzerinde daha fazla işlem yapılmasını nasıl önleyebilirim)?
!= nullnull çeklerinizde kullanmalısınız . .Equalsnesne null olduğunda her zaman bir istisna atar.
throw e;Çok daha iyi değil. throw;, diğer taraftan ...
e.ToString()yalnızca hata iletisini değil, aynı zamanda tümünü InnerExceptionsve yığın izlemesini de içeren bir dize oluşturur . Yani bu çok ağır bir istisna mesajı. (Haklı olarak!) Bu bilgileri korumak ve ait olduğu yerde tutmak istiyorsanız, sadece kullanın throw;.
throw e;karşıthrow new Exception(e.ToString());