# Dynamic Dispatch

Choosing which version of a method to run based on the object's real type, at run time.

## What is **Dynamic Dispatch**?

**Dynamic dispatch** is how polymorphism works under the hood: when a method is called, the program decides *while running* which version to use, based on the object's real type.

```csharp
Animal pet = new Dog();
pet.Speak(); // runs Dog.Speak(), not Animal.Speak()
```

Level: Journeyman · [More OOP terms at this level](https://www.ask-codey.com/glossary/subjects/oop/journeyman)

Updated: September 27, 2026

## In other subjects

- [Dynamic Dispatch in Java](https://www.ask-codey.com/glossary/dynamic-dispatch)

Source: https://www.ask-codey.com/glossary/dynamic-dispatch-oop
