Extension methods let you "add" methods to existing types (including types you don't own, like string or int) without modifying them or inheriting. They're defined as static methods with a this modifier on the first parameter, and called as if they were instance methods. LINQ is built on them.
