Inheritance and polymorphism are key object-oriented programming concepts supported in C#. Inheritance allows a child class to inherit properties and behaviors from a parent class. Polymorphism refers to classes having different implementations of the same method, allowing the method to behave differently depending on the object that calls it. Virtual methods allow subclasses to override behaviors of parent classes, while the new keyword is used to hide inherited methods instead of overriding them.