zoukankan      html  css  js  c++  java
  • 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只需要一个方法就可以解决了,又不用输入长长的参数列表。

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

  • 相关阅读:
    TP5 中通过Request获取到的 Action不同的环境,大小写不一样
    正则符号
    ubuntu mysql卸载重装
    ubuntu 多域名配置
    微信小程序-开发入门(一)
    Maven通过profiles多环境配置打包
    GitLab多机备份与恢复操作
    动态增加linux目录大小
    MQ队列及常见操作
    ②将SVN迁移到GitLab-多分支多标签迁移
  • 原文地址:https://www.cnblogs.com/SharpL/p/4705851.html
Copyright © 2011-2022 走看看