Почему вы не можете использовать ключевое слово this в статическом методе в .Net? - PullRequest
31 голосов
/ 25 сентября 2008

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

Почему бы и нет?

Ответы [ 7 ]

64 голосов
/ 25 сентября 2008

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

8 голосов
/ 25 сентября 2008

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

public static void StaticMethod(Object o)
{
     MyClass.StaticProperty = o;
}
6 голосов
/ 25 сентября 2008

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

1 голос
/ 03 декабря 2014

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

    Class ClsProgram(){
public static void staticfunc(){
ClsProgram Obj = new ClsPrograM()
Obj.NonStaticFunc();
}
public void NonStaticFunc(){}
}
1 голос
/ 25 сентября 2008

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

0 голосов
/ 28 октября 2016

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

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

Application.OpenForms["MainForm"];
0 голосов
/ 25 сентября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...