Object reference not set to an instance of an object

Uygulama geliştirirken en çok karşılaşılan hatalardan birisi hakkında kaçınılması gereken bazı davranışlardan bahsedeceğim.

Hata aslında çözümü kendi içerisinde bahsediyor. Bunu görebilmek/anlayabilmek çok zor ve mutlaka tecrübe gerektiriyor. Basit bir dil ile bu hatanın açıklaması Null olan Referans tipinde bir nesne kullanmaya çalışıyorsun

Reference Type ve Value Type

C#, Value Type ve Reference Type olmak üzere iki tür veri tipine sahiptir. Value Type, veriyi taşıyan ve bellek üzerinde taşıdığı veri kadar alan kaplayan bir tiptir. Reference Type ise bellekte sadece verinin tutulduğu adres bilgisini tutar.

Reference Type

  • String
  • Object
  • Class
  • Interface
  • Pointer

Value Type

  • Int
  • Float
  • Double
  • Decimal
  • Char
  • Bool
  • Enum
  • Struct

Liste alt kırılımlara daha da detaylandırılabilir fakat “Object reference not set to an instance of an object” hatasının sebebini kavramak için bu kadar yeterli.

Örnek vermek gerekirse, ilk değer atamasız Integer ve ya Double bir tanımlama yaptığınızda. Belleğin Stack bölümünde bir alan açılıyor ve değeri buraya hemen taşınıyor. Type’ları incelerseniz eğer Integer örneğin “0” olarak atanır. Bu nedenle ilk ataması yapılmayan bir Value Type sizi çok sıkıntıya sokmaz.

Reference Type, ilk ataması yapılmaz ise bellek için bir şey ifade etmez. “Not Reference(Referans Yok)” statüsündedir. Bu nedenle yeni bir instance alınmadan bu tipi kullanmak istediğinizde “Object reference not set to an instance of an object” hatasını alırsınız.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir