背景:比如说,有一个方法,有很多参数,且有时候只需要其中的某几个参数,有时候需要使用全部,甚至有时候一个都不需要,这时候写一个长长的参数列表一点都不酷,且容易 出错,这时候就需要考虑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只需要一个方法就可以解决了,又不用输入长长的参数列表。
这种情况常用于数据库查询或插入操作,尤其是插入操作中,有些表格有很多字段,我们总不能将每个字段都作为一个参数,那样真的蛮傻的,上面的代码只是一个例子。
时间: 2024-12-29 07:15:01