gpt4 book ai didi

c# - 接受 KeyValuePair 的通用 IEnumerable 的函数

转载 作者:太空宇宙 更新时间:2023-11-03 19:09:48 26 4
gpt4 key购买 nike

我正在尝试编写一个扩展方法,该方法对于快速查看 IEnumerable<KeyValuePair<object, object>> 的内容很有用。我在正确书写签名时遇到了一些麻烦。下面的代码适用于字符串,但我希望能够在任何通用类型的 KeyValuePair 上使用它。如果将其更改为接受 IEnumerable<KeyValuePair<object, object>> 然后尝试在 Dictionary<string,string> 类型上调用它我会收到编译器错误“实例参数:无法从'System.Collections.Generic.Dictionary'转换为'System.Collections.Generic.IEnumerable>'”即使Dictionary<TKey, TValue> 实现接口(interface) IEnumerable<KeyValuePair<TKey, TValue>>

public static string ToHumanReadableString(this IEnumerable<KeyValuePair<string, string>> dictionary)
{
if (dictionary.IsNull())
{
return "{null}";
}
StringBuilder sb = new StringBuilder();
foreach (KeyValuePair<string, string> kvp in dictionary)
{
if (!kvp.Value.IsNull())
{
sb.AppendLineAndFormat("{0}={1}", kvp.Key.ToString(), kvp.Value.ToString());
}
else
{
sb.AppendLineAndFormat("{0}={null}", kvp.Key.ToString());
}
}
return sb.ToString();
}

最佳答案

您可以使该方法通用(注意注释中的更改):

public static string ToHumanReadableString<TKey, TValue>(
this IEnumerable<KeyValuePair<TKey, TValue>> dictionary)
{
if (dictionary == null)
{
return "{null}";
}
StringBuilder sb = new StringBuilder();
foreach (var kvp in dictionary) // note change
{
if (kvp.Value == null) // note change
{
sb.AppendLineAndFormat("{0}={1}", kvp.Key.ToString(), kvp.Value.ToString());
}
else
{
sb.AppendLineAndFormat("{0}={null}", kvp.Key.ToString());
}
}
return sb.ToString();
}

请注意,我还对您的括号进行了格式化以使用更标准的缩进。

关于c# - 接受 KeyValuePair 的通用 IEnumerable 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21739330/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com