C#'s dynamic is a keyword which directs the compiler to ingore type checking, as the binding occurs at run time through the Dynamic Link Runtime (DLR). Any expression which contains a dynamic variable are treated as dynamic. Dynamic permits the use of C# syntax to code late binding and support COM interop in a cleaner clearer manner.
In addition to the new keyword dynamic, the Expando Object - an object whose members can be dyanmically added and remouved at run time. The Expando Object is more then a hashtable and permits the dyanmic creation of complex hierarchical objects dyanmically. Alexandra Russina demonstrates this on her blog.