I'm learning aspects of the clr in c# and read about this topic in "clr via c# 4th edition".
It is said that each instance of a type has a pointer to a vtable, but in the book they didn't differentiate between static, non-static and virtual methods. According to it all methods are declared in the method table withing the type object. So I think that "vtable" name is misleading, and the virtual methods table is actually only a part of the normal method table in each type object. Is that true?
That would make sense because when calling a virtual method, the object is also referenced and then the clr checks the objects type and calls the method associated with the objects class. Or am I wrong?
Another question: static and non static methods are also in the method table. My understanding is that they are only differentiated by a parameter. Non-static methods are object related, so when calling those methods, a this-pointer is passed in to reveal the object that called it. Static methods do not need this parameter. Am I right?
I know this is quite theoretically but I hope there are people who can help me!
Really nobody?