为什么我不能在SortedDictionary中添加新对?

时间:2013-10-09 10:19:18

标签: c# .net sorteddictionary

我有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

我哪里错了?

3 个答案:

答案 0 :(得分:2)

  

我哪里错了?

您正在调用Add方法,但希望它返回一些内容。它没有。

如果您尝试使用相同的条目和一个新条目创建 new 字典,您可能需要:

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

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

答案 1 :(得分:1)

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

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

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

var header_parameters = signature_parameters;

答案 2 :(得分:0)

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