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日

悬赏问题

  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并
  • ¥20 pcf8563时钟芯片不启振
  • ¥20 pip2.40更新pip2.43时报错
  • ¥15 换yum源但仍然用不了httpd
  • ¥50 C# 使用DEVMOD设置打印机首选项
  • ¥15 麒麟V10 arm安装gdal