Почему вы не можете использовать ключевое слово «this» в статическом методе в .Net?

Я пытаюсь использовать this ключевое слово в статическом методе, но компилятор не позволит мне его использовать.

Почему нет?

Это легко. Ключевое слово ‘this’ возвращает ссылку на текущий экземпляр classа, содержащего его. Статические методы (или любой статический член) не относятся к определенному экземпляру. Они существуют без создания экземпляра classа. Существует более подробное объяснение того, какие статические члены и почему / когда использовать их в документах MSDN.

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

 public static void StaticMethod(Object o) { MyClass.StaticProperty = o; } 

Статические методы специфичны для classа, а не для конкретных экземпляров. «this» представляет экземпляр classа во время выполнения, поэтому его нельзя использовать в статическом контексте, поскольку он не будет ссылаться ни на какой экземпляр. Вместо этого следует использовать имя classа, и вы сможете получить доступ к статическим членам classа

это представляет текущий объект экземпляра, и нет экземпляра со статическими методами.

В статическом методе this ссылка на объект отсутствует.

Если вы хотите использовать нестационарную функцию classа в статической функции. Создайте объект classа в статической функции. Например,

  Class ClsProgram(){ public static void staticfunc(){ ClsProgram Obj = new ClsPrograM() Obj.NonStaticFunc(); } public void NonStaticFunc(){} } 

Для вопроса OP см. Принятый ответ. Этот ответ предназначен для тех, кто ищет быстрый один лайнер для использования в статических методах.

Если class является формой, и он открыт (вам также нужно имя формы), это можно вызвать в статическом методе;

 Application.OpenForms["MainForm"]; 
  • Поиск чистого учебника WinForms MVC для C #
  • C / C ++ include в себя порядок файлов / лучшие практики
  • WCF HttpTransport: stream с буферизацией TransferMode
  • Как сделать тип привязки данных безопасным и поддерживать рефакторинг
  • Многопоточные блокировки памяти для C / C ++
  • Улучшение отражения производительности, какие альтернативы мне следует учитывать
  • Графическая библиотека .NET вокруг?
  • objective-C: BOOL vs bool
  • Добавление типов в пространство имен std
  • HTML-атрибуты в ленте-ярлыках NOT IN whitelist
  • Как сортировать наблюдаемую коллекцию?
  • Interesting Posts
    Давайте будем гением компьютера.