C# 为什么可以';我不能在分类词典中添加一对新的吗?

C# 为什么可以';我不能在分类词典中添加一对新的吗?,c#,.net,sorteddictionary,C#,.net,Sorteddictionary,我有这个分类词典: var signature_parameters = new SortedDictionary<string, string> { { "oauth_callback", SocialEngine.twitter_aggrega_redirect_uri }, { "oauth_consumer_key", SocialEngine.twitter_aggrega_consumer_key }, }; 但是它说,我不能给隐式方法分配一个void变

我有这个
分类词典

var signature_parameters = new SortedDictionary<string, string>
{
    { "oauth_callback", SocialEngine.twitter_aggrega_redirect_uri },
    { "oauth_consumer_key", SocialEngine.twitter_aggrega_consumer_key },
};
但是它说,
我不能给隐式方法分配一个void变量


我哪里错了?

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

signature_parameters.Add("oauth_signature", Uri.EscapeDataString(oauth_signature))
您可以稍后分配它,但因为它是引用类型,所以只需复制引用即可

var header_parameters = signature_parameters;
是一个void方法,因为它将一个项添加到字典中,但不返回任何内容

所以改变这个

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

var header_parameters=newkeyvaluepair(“oauth_签名”,Uri.EscapeDataString(oauth_签名));
signature\u parameters.Add(header\u parameters.Key,header\u parameters.Value);
(假设您希望插入最后一个
KeyValuePair

我错在哪里

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

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

var headerParameters = new SortedDictionary<string, string>(signatureParameters)
{
    "oauth_signature", Uri.EscapeDataString(oauth_signature)
};
var headerParameters=新分类词典(签名参数)
{
“oauth_签名”,Uri.EscapeDataString(oauth_签名)
};

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

您希望为
标题\u参数分配什么?一本新字典?@AdamHouldsworth:我想他想要上一个插入项的
KeyValuePair
。(为什么我不能添加一对新的…)@TimSchmelter其他人认为他想要一本添加了该项的新词典。这就是我的问题。我不喜欢假设。@Adamhuldsworth:我不喜欢这种情况下的
var
。但是方法链接是一种已知的模式。此外,markzzz是
KeyValuePairs
;)的粉丝@TimSchmelter我知道是这样,但关于什么东西会被送回锁链,仍然有一些假设。现在有一个公认的答案,我想我们知道想要什么:——)
var header_parameters = new KeyValuePair<string, string>("oauth_signature", Uri.EscapeDataString(oauth_signature));
signature_parameters.Add(header_parameters.Key, header_parameters.Value);
var headerParameters = new SortedDictionary<string, string>(signatureParameters)
{
    "oauth_signature", Uri.EscapeDataString(oauth_signature)
};