我正在编写一个 C# 应用程序。在该应用程序中,我需要传递任意键值对列表。我想将这些键/值传递给一个看起来像这样的实用方法:
public void PrettyPrint(string message, [type?] kvp)
{
Console.WriteLine(message);
foreach (var p in kvp)
{
Console.Write(p.Key + "\t\t\t" + p.Value);
}
}
请注意,这只是伪代码。然后我想使用这样的东西来调用这个函数:
PrettyPrint("Results:", { quantity:4, total:"$1.23", tax:"0.10" });
我看到的所有使用 C# 的东西似乎只是传递键值对的笨重。我是否忽略了什么?是否有一种简洁的方法可以在 C# 中传递键值对的动态列表
最佳答案
你可以只使用 C# 7 的 value tuples 和 params
关键字:
public static void PrettyPrint(string message, params (object key, object value)[] kvp)
{
Console.WriteLine(message);
foreach (var p in kvp)
{
Console.Write(p.key + "\t\t\t" + p.value);
}
}
像这样调用:
PrettyPrint("Results: ", ("quantity", 4), ("total", "$1.23"), ("tax", 0.10));
或者,将这些对存储在一个变量中:
(object, object)[] pairs = {("quantity", 4), ("total", "$1.23"), ("tax", 0.10)};
PrettyPrint("Results: ", pairs);
或者更简洁地使用像
foreach (var (key, value) in kvp)
这样的循环来避免 p
和方法签名中的项目名称public static void PrettyPrint(string message, params (object, object)[] kvp)
{
Console.WriteLine(message);
foreach (var (key, value) in kvp)
{
Console.Write($"{key}\t\t\t{value}");
}
}
关于c# - 键值对简明动态列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50064026/