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 关于#python#的问题,请各位专家解答!
  • ¥15 对于这个问题的解释说明
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥20 java在应用程序里获取不到扬声器设备