HATA 3 | Object reference not set to an instance of an object / Nesne başvurusu bir nesnenin örneğine ayarlanmadı


Geliştirme yaparken karşımıza en çok çıkan hatalardan biri de  'Object reference not set to an instance of an object' yani 'NullReferenceException' dır. Türkçe kullanıyorsanız -ki tavsiye etmem kaynak yetersizliği yüzünden- alacağınız hata 'Nesne başvurusu bir nesnenin örneğine ayarlanmadı'.
Burada en büyük yardımcımız break point'ler. DEBUG DEBUG DEBUG!

1- Örneğin bir class'ınız var ve bu class'ın nesnesi null. Buraya erişmeye çalışırsanız bu hatayı alırsınız. Bu basit örneği koda dökelim:

  public class Vehicle 
{
   public string Plate { get; set;}
}

public string GetVehicle()
{
  
  var plate = "";
  Vehicle vhc = null; 
  plate = vhc.Plate; ------------ HATA ALINACAK SATIR
  
}

Ben direkt Vehicle class'ını null'a eşitledim ancak siz muhtemelen database'den veri çekerken null dönecektir, breakpoint kullanarak görebilirsiniz. Kısaca null olan bir class'ın nesnesine ulaşmaya çalışırsak tabii ki bu hata alırız.

2- Örneğin şu şekilde de olabilir:

context.Vehicles.FirstOrDefault(x=> x.Plate == "34 MA 35"); 

Database'de plakası "34 MA 35" olan bir araç yoksa bu sorgu da sonuç olarak null hatası verecektir.

        
3- Sadece null class'taki nesneye erişirken değil aynı zamanda içindeki bir metota erişemeye çalıştığımızda da bu hatayı alırız. 


  public class Vehicle 
{
   public string Plate { get; set;}

   public Vehicle GetVehicleByPlate(string plate)
  {
         // sorgular, sorgular...
  }
}

// Kodumuzun bir bölümünde       
Vehicle vhc = null;
var selectedVehicle = GetVehicleByPlate("34 MA 35"); // HATA GELECEK SATIR


Bu hatanın fırlamasını engellemek için NULL kontrolü yapmak gerekir. Yukarıdaki örneği düzenlersek:

Vehicle vhc = null;
if(vhc != null)
{
 var selectedVehicle = GetVehicleByPlate("34 MA 35"); 
}








Yorumlar

Bu blogdaki popüler yayınlar

HATA 2 || Subquery returned more than 1 value.

Kolon Adı Bilinen Tabloyu Bulmak

StyleCop || Nedir? Nasıl kurulur? StyleCop Settings?