Dynamic is a new feature of Framework4.0. The emergence of dynamic makes C # have the characteristics of a weak language type. during compilation, the compiler does not check the type and reports no error, however, if a non-existent attribute or method is executed during running, the running program throws a RuntimeBinderException. The difference between var and dynamic var is the syntactic sugar provided by the compiler. The actual type will be matched during compilation and the declaration of replacing the variable. After a dynamic is compiled, it is actually an object type, except that the compiler performs special processing on dynamic and places the type check during runtime. From the compiler window of VS, we can see that the variables declared by var have smart prompts in VS, because VS can infer the actual type, and the variables declared by dynamic have no smart prompts. Use dynamic to simplify reflection and copy the code public class DynamicSample {public string Name {get; set;} public int Add (int a, int B) {return a + B ;}} public partial class DynamicPage: System. web. UI. page {protected void Page_Load (object sender, EventArgs e) {// common reflection practices DynamicSample dynamicSample = new DynamicSample (); var addMethod = typeof (DynamicSample ). getMethod ("Add"); int res = (int) addMethod. invoke (dynamicSa Mple, new object [] {1, 2}); // dynamic method, concise, recommended dynamic dynamicSample2 = new DynamicSample (); int res2 = dynamicSample2.Add (1, 2 ); // Add will not be intelligently prompted} another advantage of using dynamic to copy code is that it has better reflection performance than it has not been optimized. It is equivalent to the optimized reflection performance, but the code is clean and tidy, the author has also pasted the code and posted the running results. I have not introduced them much, so I will do it here.