Your problem is that you don't understand what a variable is, an instance of a class and a type (a class or not). First of all, you can directly access the class, if it has
static members. Each of such members represent only one single object (per Application Domain). All other members are called
instance members and are created per instance, when an instance of the class is created (via its constructor).
As to the instance methods; why you cannot call them? they are just methods, right?
Not exactly. They are designed in a pretty simple way. From such method, you can access other instance members (call method and access instance fields and properties). How? You call a method with some instance, and this instance is passed to the method as some undeclared parameter called "this". Inside an instance method, you can access an instance member like
this.myMember
.
Please see my past solution on this topic for more information:
What makes static methods accessible?[
^].
—SA