The dynamic keyword tells the compiler: "Trust me, this method exists. Don't check it until the app is running." While powerful, it is also dangerous and can hide bugs.
This is a special class that acts like a dictionary but lets you use dot notation.
dynamic user = new ExpandoObject();
user.Name = "Sandeep"; // Created at runtime!
**Architect Tip:** This is incredibly useful for handling unstructured data from a NoSQL DB or an external API where the schema changes constantly.
Using `dynamic` uses the **Dynamic Language Runtime (DLR)**. It is much slower than static code and bypasses type safety. 99.9% of the time, you should use an Interface or a Class. Only use `dynamic` for COM Interop, legacy interop, or extremely fluid data structures.
Q: "What is the difference between `object`, `var`, and `dynamic`?"
Architect Answer: "`object` is the base type; you need to cast it to use it. `var` is static typing where the compiler guesses the type for you (type-safe). `dynamic` is 'Delayed Typing' where no checks are done until runtime. `var` is for convenience; `dynamic` is for flexibility."