简单。如果我使用:
public void Add(params int[] values)
然后我可以将其用作:
Add(1, 2, 3, 4);
但现在我正在处理键值对!我有一个 KeyValue 类将整数链接到字符串值。所以我开始:
public void Add(params KeyValue[] values)
但是我不能用这个:
Add(1, "A", 2, "B", 3, "C", 4, "D");
相反,我不得不使用:
Add(new KeyValue(1, "A"), new KeyValue(2, "B"), new KeyValue(3, "C"), new KeyValue(4, "D"));
呃……我已经不喜欢这个了……
因此,现在我使用不带 params 修饰符的 Add 函数,并将预定义的数组传递给该函数。因为它只是用于测试的快速初始化,所以我对需要这个额外的代码并不太担心,尽管我想让代码简单易读。我很想知道使用我无法使用的方法的技巧,但是有没有什么方法可以在不使用“new KeyValue()”结构的情况下做到这一点?
最佳答案
如果您接受了 IDictionary<int,string>
,您大概可以使用(至少在 C# 3.0 中):
Add(new Dictionary<int,string> {
{1, "A"}, {2, "B"}, {3, "C"}, {4, "D"}
});
有什么用吗?
示例 Add
:
static void Add(IDictionary<int, string> data) {
foreach (var pair in data) {
Console.WriteLine(pair.Key + " = " + pair.Value);
}
}
关于c# - 使用键值对作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1362302/