Переменные в статичных основных методах

Это - известное то, что статический метод может работать только над статическими участниками.

public static void Main()
{
    Test t1 = new Test();
}

Здесь Main метод является статическим, но я не объявил t1 как статичный. Разве это неявно статично?

14
задан tereško 12 July 2014 в 07:50
поделиться

2 ответа

Нет, это локальная переменная. Локальные переменные ведут себя одинаково, независимо от того, объявлены ли они в статических методах или методах экземпляра.

В качестве очень приблизительного руководства (захваченные переменные и т. Д. Создают сложности):

  • Переменные экземпляра: одна переменная на экземпляр
  • Статические переменные: одна переменная для самого типа
  • Локальные переменные ( включая параметры): одна отдельная переменная для каждого вызова метода
23
ответ дан 1 December 2019 в 08:15
поделиться

Это хорошо известный факт, что статический метод может работать только со статическими членами

Это не факт; это ложь. Никаких ограничений нет; статические методы имеют полный доступ ко всем членам своего типа:

class C 
{
    private int x;
    static C Factory()
    {
        C c = new C();
        c.x = 123;
    }
}

Factory - статический метод; у него есть доступ к членам частного экземпляра любого экземпляра C.

10
ответ дан 1 December 2019 в 08:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: