为什么我不能将新对添加到排序词典中

本文关键字:排序 添加 不能 为什么 | 更新日期: 2023-09-27 18:34:44

我有这个SortedDictionary

var signature_parameters = new SortedDictionary<string, string>
{
    { "oauth_callback", SocialEngine.twitter_aggrega_redirect_uri },
    { "oauth_consumer_key", SocialEngine.twitter_aggrega_consumer_key },
};

现在我试了这个:

var header_parameters = signature_parameters.Add("oauth_signature", Uri.EscapeDataString(oauth_signature));

但它说I can't assign a void variable to a implicit method.

我错在哪里?

为什么我不能将新对添加到排序词典中

我错在哪里?

您正在调用 Add 方法,但期望它返回一些内容。其实不然。

如果您尝试创建一个具有相同条目和一个新条目的新词典,您可能需要:

var headerParameters = new SortedDictionary<string, string>(signatureParameters)
{
    "oauth_signature", Uri.EscapeDataString(oauth_signature)
};

构造函数将创建现有字典的副本,然后集合初始值设定项将键/值对添加到新字典中。

Add方法将项目添加到字典中,但不返回任何内容,因此您无法将Add方法的结果分配给变量。

signature_parameters.Add("oauth_signature", Uri.EscapeDataString(oauth_signature))

您可以稍后分配它,但由于它是引用类型,因此只需复制引用。

var header_parameters = signature_parameters;

Add是一个 void 方法,因为它将项目添加到字典中,但它不返回某些内容。

所以改变这个

var header_parameters = signature_parameters.Add("oauth_signature", Uri.EscapeDataString(oauth_signature));

var header_parameters = new KeyValuePair<string, string>("oauth_signature", Uri.EscapeDataString(oauth_signature));
signature_parameters.Add(header_parameters.Key, header_parameters.Value);

(假设你想要最后插入KeyValuePair(