sudhakarthikeyan Ответов: 2

Можем ли мы нестатический метод внутри статического метода


можем ли мы использовать нестатический метод внутри статического метода

приведите какой-нибудь пример

Что я уже пробовал:

можем ли мы использовать нестатический метод внутри статического метода

приведите какой-нибудь пример

2 Ответов

Рейтинг:
7

Jochen Arndt

Короткий ответ: Нет.
Вы не можете получить доступ к экземпляру класса из статического метода класса. Только подумайте: статическая функция не знает, какие экземпляры существуют при вызове. Их может быть несколько или даже ни одного.

Однако вы можете передать ссылку на класс:

class MyClass {
    void NonStaticFunc()
    {
        // Do something
    }
    
    static void StaticFunc(MyClass self)
    {
        self.NonStaticFunc();
    }
}

MyClass myclass;
myclass.NonStaticFunc();
MyClass.StaticFunc(myclass);
Но это не имеет смысла при использовании его с экземплярами собственного класса. Нестатические функции всегда вызываются со скрытым значением это (ссылка на C#) | Microsoft Docs[^] ссылка.


Рейтинг:
15

CPallini

Статический метод не содержит ссылки на экземпляр своего класса (это класс следовательно, нет, вы не можете вызвать нестатический метод внутри статического.

Конечно вы можете и так

  • Создайте объект класса внутри статического метода, а затем вызовите нестатический метод, используя такой объект.
или
  • Передайте экземпляр класса в качестве параметра статического метода (а затем снова используйте его для вызова нестатического метода).


Из-за расплывчатости вашего вопроса может быть много других способов (например, вызов нестатического метода объекта совершенно несвязанного класса).

Предоставление примеров оставлено в качестве упражнения.