-1

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

我哪里错了?

4

3 回答 3

2

我哪里错了?

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

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

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

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

于 2013-10-09T10:23:12.030 回答
1

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

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

您可以稍后分配它,但因为它是一个引用类型,所以您只需复制该引用。

var header_parameters = signature_parameters;
于 2013-10-09T10:21:31.307 回答
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

于 2013-10-09T10:22:38.327 回答