A few questions about Extension Methods:
Why are Extension Methods static?
Why do they need to be declared in a static class?
Why are Extension Methods static?
Because you cannot modify the class to add instance methods. It's all syntactic sugar to make calls to these methods nicer, nothing more.
Why do they need to be declared in a static class?
Because we're not meant to create instances of the class. It's a design decision. Why complicate things like having instances of some class that has extension methods attached to them that might not even be usable?
What does the this keyword indicate in the parameter list of extension method? As it is a static class how does the "this" keyword work in this context?
It's a static method. this has no meaning in this context. The this in the signature is just a way to denote that an extension method is being declared.
How does memory allocation happen for these type of methods?
Confused about this one. They are all static methods on a static class. They are "allocated" like any other (static) method, there's only one copy of the code for the type.