Это - известное то, что статический метод может работать только над статическими участниками.
public static void Main()
{
Test t1 = new Test();
}
Здесь Main
метод является статическим, но я не объявил t1
как статичный. Разве это неявно статично?
Нет, это локальная переменная. Локальные переменные ведут себя одинаково, независимо от того, объявлены ли они в статических методах или методах экземпляра.
В качестве очень приблизительного руководства (захваченные переменные и т. Д. Создают сложности):
Это хорошо известный факт, что статический метод может работать только со статическими членами
Это не факт; это ложь. Никаких ограничений нет; статические методы имеют полный доступ ко всем членам своего типа:
class C
{
private int x;
static C Factory()
{
C c = new C();
c.x = 123;
}
}
Factory - статический метод; у него есть доступ к членам частного экземпляра любого экземпляра C.