你的理解基本正确,但最好将其分成两个初始化步骤。
首先,初始化 `KeyValuePair` ,然后使用它和一个 `int` 来初始化 `KeyValuePair, 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);