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

3

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

如果我有“KeyValuePair”,声明应该如下:

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

如果我有以下内容,我该如何声明它:
KeyValuePair<KeyValuePair<String,String>,int>

我在这里的语法上感到非常迷茫,请帮助我解决问题!谢谢!

哥们,你用的是哪种编程语言?你试过什么代码了吗?如果你能说一下会更好,我想。 - Manish
抱歉,我以为已经很清楚了。我的错,这是C#。 - Кристиян Костадинов
1个回答

4
你的理解基本正确,但最好将其分成两个初始化步骤。
首先,初始化 `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);

是的,我想过那个,但如果我可以用困难的方法做,为什么要简单呢? :D 你能帮忙解决难题吗?如何将这两行代码合并成一行? - Кристиян Костадинов
不使用任何其他方法:new KeyValuePair<KeyValuePair<String,String>,int>(new KeyValuePair<String,String>("String 1","String 2"), 42) - IS4
@КристиянКостадинов,当然,请看我的最新编辑。 :) 祝你有美好的一天! - Matthew Watson
谢谢!你是最棒的!:P - Кристиян Костадинов

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接