C#中何时使用dynamic

背景:比如说,有一个方法,有很多参数,且有时候只需要其中的某几个参数,有时候需要使用全部,甚至有时候一个都不需要,这时候写一个长长的参数列表一点都不酷,且容易 出错,这时候就需要考虑C#的dynamic类型来作为参数了。在操作sql语句的操作时尤为常见。

代码如下:

 1         public static void TestDynamic()
 2         {
 3             dynamic d = new ExpandoObject();
 4             d.Name = "sharpL";
 5             d.Age = 25;
 6             d.City = "北京";
 7             dosth(d);
 8         }
 9 
10         public static void dosth(dynamic d1)
11         {
12             string tmp = "";
13             //把动态类型强制转换为字典类型
14             var kvs = (IDictionary<string, object>)d1;
15             if(kvs.ContainsKey("Name"))
16             {
17                 tmp += "  我的名字是"+kvs["Name"];
18             }
19             if (kvs.ContainsKey("Age"))
20             {
21                 tmp += "   我的年龄是" + kvs["Age"];
22             }
23             if (kvs.ContainsKey("Fun"))
24             {
25                 tmp += "   我的爱好是" + kvs["Fun"];
26             }
27             if (kvs.ContainsKey("City"))
28             {
29                 tmp += "   我的城市是" + kvs["City"];
30             }
31             Console.WriteLine(tmp);
32         }
33     }

  如上,我们可能只输入姓名,而有时可能需要输入所有的信息,用dynamic只需要一个方法就可以解决了,又不用输入长长的参数列表。

  这种情况常用于数据库查询或插入操作,尤其是插入操作中,有些表格有很多字段,我们总不能将每个字段都作为一个参数,那样真的蛮傻的,上面的代码只是一个例子。

原文地址:https://www.cnblogs.com/SharpL/p/4705851.html