SORU
20 HAZİRAN 2011, PAZARTESİ


eğer nesne c boş olup olmadığını kontrol etme#

Eğer boş ise, bir nesne üzerinde daha fazla işlenmesini önlemek istiyorum.

Aşağıdaki kodu eğer nesne ya da null Gözden geçirdim

if(!data.Equals(null))

ve

if(data != null)

Ancak, dataList.Add(data) NullReferenceException alıyorum. Eğer nesne null ise, hiçbir zaman bile-deyim girmiş olmalı!

Böylece, eğer bu olursa, bir nesnenin null olup olmadığının kontrolü, uygun yoldur diye 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;
}

Eğer bu nesnenin null olup olmadığının kontrolü, doğru şekilde, yanlış yapıyorum (nasıl nesne üzerinde daha fazla işlem NullReferenceException önlemek için önlem alabilir miyim) neyim?

CEVAP
20 HAZİRAN 2011, PAZARTESİ


null ama dataList data değil.

Bir oluşturmanız gerekir

public List<Object> dataList = new List<Object>();

Bir alan olduğu için, private yapmak daha iyi.: Ve eğer bir şey seni engelleyen bir şey varsa, o da 14* *olun. Sadece iyi bir uygulamadır.

Kenara

Hiçlik, kontrol etmek için doğru yolu if(data != null). Kontrol Bu tür bir başvuru türleri için her yerde, hatta Nullable<T> eşitlik operatörü hiçlik denetlerken nullable.HasValue ifade etmenin daha uygun bir yol olduğu için geçersiz kılar.

Eğer if(!data.Equals(null)) eğer yaparsanız data == null NullReferenceException alacak. Bu durum kaçınarak bu biraz komik olan ilk etapta hedefi oldu.

Ayrıca bu yaptığın:

catch (Exception e)
{
    throw new Exception(e.ToString());
}

Bu kesinlikle iyi değil. Bu durumda bu paragrafı görmezden yöntemi, hala içindeyken ayıklayıcıya girilsin diye oraya koymak olduğunu tahmin edebiliyorum. Aksi takdirde, hiçbir şey için istisnalar yakalamak yok. Ve eğer bunu yaparsanız, sadece throw; bunları kullanarak yeniden oluşturma.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Flohoo

    Flohoo

    12 EYLÜL 2009
  • friendz.net

    friendz.net

    29 EKİM 2010
  • LardTardProductions's channel

    LardTardProd

    10 NİSAN 2009