The "dynamic" keyword [1] is my favorite blunder in C#.
It's great if you are use it for COM interropt but it's awful otherwise.
The code compiles but from time to time it fails at runtime and performance are sometimes Ok, sometimes not depending on the call stack.
[1] https://docs.microsoft.com/en-us/dotnet/csharp/programming-g...