25.07.2017 Views

Intro-CSharp-Book-v2015

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Глава 14. Дефиниране на класове 547<br />

При опит да създадем нов обект от тип нашия клас, в конзолата ще бъде<br />

отпечатано съответно:<br />

this.name has value of: ""<br />

Втората стъпка на CLR, след инициализирането на полетата със стойността<br />

по подразбиране за съответния тип е, ако е зададена стойност при<br />

декларацията на полето, тя да му се присвои.<br />

Така, ако променим реда от класа Dog, на който декларираме полето name,<br />

то първоначално ще бъде инициализирано със стойност null и след това ще<br />

му бъде присвоена стойността "Rex".<br />

private string name = "Rex";<br />

Съответно, при всяко създаване на обект от нашия клас:<br />

public static void Main()<br />

{<br />

Dog dog = new Dog();<br />

}<br />

Ще бъде извеждано:<br />

this.name has value of: "Rex"<br />

Едва след тези две стъпки на инициализация на полетата на класа (инициализиране<br />

със стойностите по подразбиране и евентуално стойността<br />

зададена от програмиста по време на декларация на полето), се извиква<br />

конструкторът на класа. Едва тогава, полетата получават стойностите,<br />

които са им дадени в тялото на конструктора.<br />

Деклариране на конструктор с параметри<br />

В предната секция, видяхме как можем да дадем стойности на полетата,<br />

различни от стойностите по подразбиране. Много често, обаче, по време на<br />

декларирането на конструктора не знаем какви стойности ще приемат<br />

различните полета. За да се справим с този проблем, по подобие на<br />

методите с параметри, нужната информация, която трябва за работата на<br />

конструктора, му се подава чрез списъка с параметри. Например:<br />

public Dog(string dogName, int dogAge, double dogLength)<br />

{<br />

name = dogName;<br />

age = dogAge;<br />

length = dogLength;<br />

collar = new Collar();<br />

}

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!