TDPConscious 2022-03-30 11:46 采纳率: 47.4%
浏览 33
已结题

字典拼接为字符串怎样效率最高?

问题1:
需求是将字典转化成get请求规范的字符串,
name1=value1&name2=value2&name3..
怎么写消耗最小 效率最高?
问题2:
以下两种写法有什么不同?

    static public string ParseToString(IDictionary<string, string> parameters)
    {
        IDictionary<string, string> sortedParams = new SortedDictionary<string, string>(parameters);
        IEnumerator<KeyValuePair<string, string>> dem = sortedParams.GetEnumerator();

        StringBuilder query = new StringBuilder("");
        while (dem.MoveNext())
        {
            string key = dem.Current.Key;
            string value = dem.Current.Value;
            if (!string.IsNullOrEmpty(key) && !string.IsNullOrEmpty(value))
            {
                query.Append(key).Append("=").Append(value).Append("&");
            }
        }
        string content = query.ToString().Substring(0, query.Length - 1);

        return content;
    }

    static public string ParseToString(Dictionary<string, string> parameters)
    {
        StringBuilder query = new StringBuilder("");
        foreach (var param in parameters)
            if (!string.IsNullOrEmpty(param.Key) && !string.IsNullOrEmpty(param.Value))
                query.Append(param.Key).Append("=").Append(param.Value).Append("&");

        string content = query.ToString().Substring(0, query.Length - 1);

        return content;
    }
  • 写回答

4条回答 默认 最新

  • CSDN专家-showbo 2022-03-30 11:54
    关注

    效率第二个快点,直接遍历,不用生成其他对象。但是如果要计算签名什么的,比如微信公众号开发接口验证是需要按照参数排序的,然后再加密,那么第二种可能会出错

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月7日
  • 已采纳回答 3月30日
  • 创建了问题 3月30日

悬赏问题

  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探