keyword "auto" C++ and "dynamic" C#

NO, they are not similar. AFAIK, auto would be similar to var in C#.

auto gets resolved to compile time, not runtime.

FROM MSDN

The auto keyword directs the compiler to use the initialization expression of a declared variable to deduce its type.

So in your code

auto a = 5; //C++
a.ToUpper(); // Compile time error

But

dynamic a = 5; //C# 
a.ToUpper(); //No error at compile time since it will resolve @ runtime

But at run time it will throw an error since int type has no ToUpper() method


No.

The equivalent of auto in C# is var - the compiler will deduce the appropriate type. dynamic is determined at runtime, so it will never throw compile errors. From MSDN:

"At compile time, an element that is typed as dynamic is assumed to support any operation."

It will however throw errors at runtime if the code is invalid.