Yes, you achieve polymorphism by using virtual methods in C#, i.e. if you declare a method virtual in a base class you can override this method in a derived class to change it's behavior.
If the method in the base class is not marked as virtual and you define a method with the same signature in a derived class, you are hiding the method instead of overriding it and this is a form of runtime polymorphism as the method call is resolved at compile time.
Knowing When to Use Override and New Keywords (C# Programming Guide):http://msdn.microsoft.com/en-us/library/ms173153.aspx
Please remember to mark any helpful posts as answer.