If you declare a method of a class or a structure, only one piece of code implementing this method is created, one per all instances. Why? Well… just because OOP wasn't created by idiots.
Now, the question is: the same method called on different instances of the same calls apparently does different job, well, because it works with different instance. The question is simple: it works exactly as a static methods, with one simple difference: it has one extra parameter which is implicitly passed to a method; and this parameter is a reference to that very instance. And guess what is this? This is a parameter "this".
For some more explanations, please see my past solution: What makes static methods accessible?
One more interesting fact: .NET code is JIT-compiled. When the code is compiled to the native CPU instructions? In fact, it is compiled on demand on per-method basic. If some method are linked into the assembly but never called, this method will never be JIT-compiled during the whole run time.
Read this article for in-depth information on creating the run-time objects behind the scene: http://msdn.microsoft.com/en-us/magazine/cc163791.aspx
[I have no idea why so much white space is rendered below — SA]