2013-10-09 114 views
-1

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

我在哪里错了?

+0

你想分配给'header_parameters'什么?一本新字典? –

+0

@AdamHouldsworth:我假设他想拥有最后一个插入项目的'KeyValuePair '。 (_“为什么我不能添加一对...”) –

+0

@TimSchmelter其他人假设他想要添加一个新的词典。因此我的问题。我不喜欢假设。 –

回答

2

我在哪里错了?

你打电话给Add方法,但期望它返回一些东西。它没有。

如果你想创建一个新字典用相同的条目,一个新的,你可能想:

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

构造函数将创建现有的字典的副本,那么集合初始化器会将键/值对添加到新的键。

1

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

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

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

var header_parameters = signature_parameters; 
0

Add是一种无效方法,因为它向字典中添加了一项,但它不返回任何内容。

所以改变这种

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

相关问题