Непозволено извикване на нестатичен метод от статичен метод – пример
Сега ще се опитаме да извикаме нестатичен метод от статичен метод. Нека в нашия клас Dog декларираме нестатичен метод PrintAge(), който отпечатва стойността на полето age:
public void PrintAge()
{
Console.WriteLine(this.age);
}
|
Съответно, нека се опитаме от метода Main(), който декларираме в класа Dog, да извикаме този метод без да създаваме обект от нашия клас:
При опит за компилация ще получим следната грешка:
Резултатът е подобен, ако се опитаме да измамим компилатора, опитвайки се да извикаме метода чрез ключовата дума 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
|
От разгледаните примери, можем да направим следния извод:
Сподели с приятели: |