Почему вы не можете использовать ключевое слово this в статическом методе в .Net?
38364 просмотра
7 ответа
Я пытаюсь использовать this
ключевое слово в статическом методе, но компилятор не позволяет мне его использовать.
Почему нет?
Автор: user18931 Источник Размещён: 12.11.2019 09:52Ответы (7)
65 плюса
Это легко. Ключевое слово this возвращает ссылку на текущий экземпляр класса, в котором он находится. Статические методы (или любые статические члены) не принадлежат конкретному экземпляру. Они существуют без создания экземпляра класса. Существует гораздо более подробное объяснение того, что такое статические члены и почему / когда использовать их в документах MSDN.
Автор: Kilhoffer Размещён: 25.09.2008 04:088 плюса
В качестве дополнительного примечания, из метода Static вы можете получить доступ или к статическим членам этого класса. Делать приведенный ниже пример верным и порой весьма полезным.
public static void StaticMethod(Object o)
{
MyClass.StaticProperty = o;
}
Автор: Timothy Carter
Размещён: 25.09.2008 05:07
6 плюса
Статические методы специфичны для класса, а не для конкретного экземпляра. «this» представляет экземпляр класса во время выполнения, поэтому его нельзя использовать в статическом контексте, поскольку он не будет ссылаться ни на один экземпляр. Вместо этого следует использовать имя класса, и вы сможете получить доступ только к статическим членам в классе.
Автор: user10059 Размещён: 25.09.2008 04:101 плюс
это представляет текущий объект экземпляра, и нет экземпляра со статическими методами.
Автор: CSharpAtl Размещён: 25.09.2008 04:401 плюс
Если Вы хотите использовать нестатическую функцию класса в статической функции. Создайте объект класса в статической функции. Например
Class ClsProgram(){
public static void staticfunc(){
ClsProgram Obj = new ClsPrograM()
Obj.NonStaticFunc();
}
public void NonStaticFunc(){}
}
Автор: Rohit Shirgaonkar
Размещён: 03.12.2014 08:57
0 плюса
0 плюса
По вопросу ОП обращайтесь к принятому ответу. Этот ответ для тех, кто ищет быстрый однострочник для использования в статических методах.
Если класс является формой, и она открыта (вам также нужно имя формы), это можно вызвать внутри статического метода;
Application.OpenForms["MainForm"];
Автор: Barry Guvenkaya
Размещён: 28.10.2016 01:02
Вопросы из категории :
- c# Преобразовать десятичную в двойную?
- c# Как рассчитать чей-то возраст в C #?
- c# Как вы сортируете словарь по значению?
- c# В чем разница между int и Integer в Java и C #?
- c# Как создать новый экземпляр объекта из Типа
- c# Datatable против Dataset
- c# Setting Objects to Null/Nothing after use in .NET
- c# Конвертировать целые числа в записанные числа
- c# Почему я не могу иметь абстрактные статические методы в C #?
- c# Как я могу оценить код C # динамически?
- .net Действительно ли опечатанные классы действительно предлагают преимущества?
- .net Как заставить кнопку выглядеть так, как будто она нажата?
- .net Почему в C # нельзя хранить объект List <string> в переменной List <object>
- .net В чем разница между строкой и строкой в ??C #?
- .net Entity Framework против LINQ to SQL