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