Right question should be: what makes a non-static method able to access the instance?
This is because there is nothing special about static methods. They are completely equivalent to old good functions existing before OOP. They receive only those parameters which are explicitly listed in their signature and can work only with these parameters. The can call other static methods and properties (all properties are actually called) and use static variables provided there are sufficient access to them. That cannot access anything non-static beyond their parameters. Of course, some parameters can be referenced to instanced of classes or structures; in this and only in this way a static method can access non-static members of those instances.
In contrast, a non-static method gets access to some instance. In this way, it needs instance to be called. Where it comes from? Actually, all non-static methods (also called instance methods) have additional hidden parameter "this" user to reference the instance.
In effect, something like
class A {
internal void InstanceMethod(int value, string name) {}
}
A a = new A();
a.InstanceMethod(3, "name");
Means this:
A a = new A();
A.InstanceMethod(a, 3, "name);
// when implementation uses "this",
// it is equal to the reference of the parameter 'a' passed in this call
Got the idea?
—SA