Why doesn\'t the C# compiler tell me that this piece of code is invalid?
class Program
{
static void Main(string[] args)
{
dynamic d = 1;
When the compiler found the operation on/with variable of type dynamic
, it will emit that information using CallSite
object. (The CallSite object is store information about the call.)
In your first sample it can compile because the compiler can emit the information (e.g. type of call, method you want to call etc.). In the second code, you try to call method that doesn't exist so the compiler cannot emit IL code for you.