Last Updated: May 22, 2026
The dynamic keyword tells the compiler "don't check this type for me, figure it out at runtime." It's a static type in the language, but every operation against it (method calls, property access, arithmetic) is resolved by the Dynamic Language Runtime when the line of code actually executes. This chapter is about why C# has that escape hatch, where it is useful, and the specific ways it can backfire.