Обычно мы не можем вызывать нестатический метод внутри статического метода. Но если мы используем экземпляр класса, мы можем сделать это. Как экземпляр класса дает нам возможность?Почему вызов нестатического метода внутри статического метода в C# возможен через экземпляр класса
Почему вызов нестатического метода внутри статического метода в C# возможен через экземпляр класса
ответ
Обычно мы не можем вызвать нестатический метод внутри статического метода.
Это грубое упрощение: мы не можем вызывать нестатические методы в нашем собственном классе, предоставляя одно имя метода, потому что не существует «этого» объекта по умолчанию. Когда вы пишете
SomeMethod(arg1, arg2);
внутри метода экземпляра C# интерпретирует это как
this.SomeMethod(arg1, arg2);
Тот же трюк не работает в статическом методе, так как статические методы не имеют доступа к «это».
Но если мы используем экземпляр класса, мы можем сделать это.
Это потому, что как только вы предоставите другой объект, нет необходимости искать «этот» объект.
Вопрос просто: какой экземпляр вы пытаетесь вызвать метод? Какой набор локальных полей следует принять?
В случае метода экземпляра это просто: когда вы вызываете SomeInstanceMethod()
, компилятор добавляет неявный this.
, поэтому ответ на эти вопросы является «текущим» (который, с технической точки зрения, значение arg0
). Поэтому, когда вы вводите SomeInstanceMethod()
, компилятор предполагает, что вы имеете в виду this.SomeInstanceMethod()
.
В случае статического метода нет неявного this
, который может быть добавлен. Вы все равно можете вызвать методы экземпляра, но вам нужно явно указать целевой экземпляр. someObj.SomeInstanceMethod()
будет работать нормально. Обратите внимание, что вы также можете использовать someObj.SomeInstanceMethod()
из метода экземпляра для вызова метода в контексте другого экземпляра.
- 1. Вызов нестатического метода внутри статического веб-метода
- 2. Получить имя нестатического метода внутри статического метода
- 3. Вызов нестатического метода из статического метода в Objective C
- 4. вызов нестатического метода из статического метода crash
- 5. вызов статического метода внутри класса?
- 6. вызов нестатического метода из статического метода в абстрактном классе (C++)
- 7. Статический метод статического класса против статического метода нестатического класса (C#)
- 8. Вызов нестатического метода из статического в Python
- 9. Вызов нестатического метода другого класса
- 10. Вызов нестатического метода извне класса
- 11. Вызов статического метода из нестатического контекста
- 12. Создание статического делегата из нестатического метода
- 13. Java: вызов нестатического метода с этим. от статического метода
- 14. Вызов метода статического производного класса из метода статического базового класса
- 15. C++ Вызов метода класса внутри же метода
- 16. Вызов метода нестатического члена из другого метода
- 17. скрытие статического метода против переопределения нестатического метода
- 18. Написание нестатического метода как статического метода
- 19. C# вызов абстрактного метода из статического метода
- 20. Вызов метода класса через экземпляр объекта
- 21. Вызов статического метода типа класса C#
- 22. Вызов статического метода производного класса из метода базового класса
- 23. Проверка вызова нестатического метода частного статического вложенного класса статического внешнего класса
- 24. Asp.Net Ajax - вызов нестатического метода
- 25. Вызов нестатического метода (в другом классе) из статического
- 26. Вызов статического метода класса БЕЗ класса, PHP
- 27. Есть ли способ вызова нестатического метода из статического метода?
- 28. Вызов статического метода из другого класса java
- 29. RecyclerView Onclick (вызов нестатического метода)
- 30. Вызов статического метода