Почему вы не можете использовать ключевое слово «this» в статическом методе в .Net?
Я пытаюсь использовать this
ключевое слово в статическом методе, но компилятор не позволит мне его использовать.
Почему нет?
- «System.OutOfMemoryException» было брошено, когда еще много свободного места
- Автозаполнение не работает в Visual Studio
- Вложены ли вложенные функции в gcc?
- В MVVM должен ViewModel или Model реализовать INotifyPropertyChanged?
- ASP.NET GridView RowIndex как CommandArgument
- Инъекция зависимостей против местоположения службы
- Разница в make_shared и normal shared_ptr в C ++
- Как отключить форму закрытия Alt + F4?
- Как использовать функцию string.substr ()?
- Как программно получить привилегии root?
- Глобально конвертировать UTC DateTimes в пользовательские локальные DateTimes
- Синтаксис и использование примера _Generic в C11
- Общая ошибка произошла в GDI +, JPEG-изображении в MemoryStream
Это легко. Ключевое слово ‘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"];