Да си припомним: какво са класовете и обектите?


Непозволено извикване на нестатичен метод от статичен метод – пример



страница61/84
Дата03.01.2022
Размер0.54 Mb.
#112941
ТипПрограма
1   ...   57   58   59   60   61   62   63   64   ...   84
Класове
Свързани:
Изпитна тема1, Изпитна тема2
Непозволено извикване на нестатичен метод от статичен метод – пример

Сега ще се опитаме да извикаме нестатичен метод от статичен метод. Нека в нашия клас Dog декларираме нестатичен метод PrintAge(), който отпечатва стойността на полето age:



public void PrintAge()

{

Console.WriteLine(this.age);



}

Съответно, нека се опитаме от метода Main(), който декларираме в класа Dog, да извикаме този метод без да създаваме обект от нашия клас:

public static void Main()

{

// Attempt to invoke non-static method from a static context



PrintAge(); // INVALID

}


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

An object reference is required for the non-static field, method, or property 'Dog.PrintAge()'

Резултатът е подобен, ако се опитаме да измамим компилатора, опитвайки се да извикаме метода чрез ключовата дума this:

public static void Main()

{

// Attempt to invoke non-static method from a static context



this.PrintAge(); // INVALID

}


Съответно, както в случая с опита за достъп до нестатично поле от статичен метод, чрез ключовата дума this, компилаторът извежда следното съобщение, без да успее да компилира нашия клас:

Keyword 'this' is not valid in a static property, static method, or static field initializer

От разгледаните примери, можем да направим следния извод:





Сподели с приятели:
1   ...   57   58   59   60   61   62   63   64   ...   84




©obuch.info 2024
отнасят до администрацията

    Начална страница