如何将值设置为:KeyValuePair<KeyValuePair<String,String>,int>

How to set the values to: KeyValuePair<KeyValuePair<String,String>,int>

C# 我在我的主 KeyValuePair 中使用 KeyValuePair 作为键。 这是我的问题:

如果我有"KeyValuePair",声明如下:

KeyValuePair<String,String> varName = new KeyValuePair<String,String>("String 1","String 2");

如果我有以下情况,我该如何申报:

KeyValuePair<KeyValuePair<String,String>,int>

我对这里的语法迷路了。请帮帮我!

谢谢!

你几乎已经知道了,但最简单的方法是将它分成两个初始化。

首先,初始化 KeyValuePair<string, string>,然后使用它和 int 一起初始化 KeyValuePair<KeyValuePair<string, string>, int>:

var pair = new KeyValuePair<string, string>("string 1", "string 2");
var varName = new KeyValuePair<KeyValuePair<string, string>, int>(pair, 10);

如果你像这样编写一个辅助方法,你可以大大简化这个过程:

public static KeyValuePair<T1, T2> MakeKeyValuePair<T1, T2>(T1 key, T2 value)
{
    return new KeyValuePair<T1, T2>(key, value);
}

使用它,您可以执行以下操作:

var pair    = MakeKeyValuePair("string 1", "string 2");
var varName = MakeKeyValuePair(pair, 10);

这更容易理解,您不需要明确指定类型。

或者如果你愿意(我个人不喜欢这个):

var varName = MakeKeyValuePair(MakeKeyValuePair("string 1", "string 2"), 10);

但是如果你真的想用艰难的方式做到这一点:

var varName = new KeyValuePair<KeyValuePair<string, string>, int>(
    new KeyValuePair<string, string>("string 1", "string 2"), 
    10);