Ob'ektni boshlashtiruvchi sizning a'zolaringizdan misol qilib keltirmaydi .
Quyidagi kodni ko'ring:
var myInstance = new MyInstance { MyMember = new MyMember { Value = 3 }; }
Bu quyidagilarni ichiga oladi:
var myMember= new MyMember();
myMember.MyMember = 3;
var myInstance = new MyInstance();
myInstance.MyMember = myMember;
Siz o'zingiz uchun ni yaratishni unutdingiz MyMember
, shuning uchun ob'ekt intializer bu xususiyatga kirish ga harakat qiladi va unga qo'shimcha qiymatlarni belgilaydi. Buning sababi, ob'ekt boshlang'ichlari, keyin ni tegishli konstruktordan so'ng ishga tushirganligi sababli. Shunday qilib, sizning holatlaringizga ko'ra:
var myInstance = new MyInstance();
myMymber.MyMember = 3;
myMember
sifatida NullReferenceException
nima uchun yaratilganligi hech qachon aniqlanmagan.
Nima uchun bu hatto kompilyatsiya? Xullas, derleyici, MyMember
MyInstance
ning asoschisi ichidan yaratilganini ta'kidlaydi. Buni aslida qilgandek his qilolmaysiz.
class Instance
{
MyMember MyMember = new MyMember();
}
null
a'zolaridan ajralib chiqish, albatta, absoluetely to'g'ri.