25.07.2017 Views

Intro-CSharp-Book-v2015

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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

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

на следното:<br />

An object reference is required for the non-static field, method, or<br />

property 'Dog.name'<br />

Ако въпреки това, се опитаме в метода да достъпим полето чрез ключовата<br />

дума this:<br />

public static string PrintName()<br />

{<br />

// Trying to access non-static variable from static method<br />

Console.WriteLine(this.name); // INVALID<br />

}<br />

Компилаторът отново няма да е доволен и този път ще изведе следното<br />

съобщение, без да успее да компилира класа:<br />

Keyword 'this' is not valid in a static property, static method, or<br />

static field initializer<br />

Непозволено извикване на нестатичен метод от статичен<br />

метод – пример<br />

Сега ще се опитаме да извикаме нестатичен метод от статичен метод. Нека<br />

в нашия клас Dog декларираме нестатичен метод PrintAge(), който<br />

отпечатва стойността на полето age:<br />

public void PrintAge()<br />

{<br />

Console.WriteLine(this.age);<br />

}<br />

Съответно, нека се опитаме от метода Main(), който декларираме в класа<br />

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

public static void Main()<br />

{<br />

// Attempt to invoke non-static method from a static context<br />

PrintAge(); // INVALID<br />

}<br />

При опит за компилация ще получим следната грешка:<br />

An object reference is required for the non-static field, method, or<br />

property 'Dog.PrintAge()'

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

Saved successfully!

Ooh no, something went wrong!