我有一个小问题:我创建了此方法
private static Dictionary<object, int> StuffToDictionary(IEnumerable<object> input)
{
var dict = new Dictionary<object, int>();
foreach (var word in input)
{
try
{
dict.Add(word, 1);
}
catch (ArgumentException)
{
dict[word]++;
}
}
return dict;
}
和调用此方法的变量//尚不起作用;)
var input = args[0];
Console.WriteLine("Character frequencies:\n" + StuffToDictionary(input));
我应该如何更改代码(输入参数的类型,变量的声明等),以便不仅可以将对象类型变量array放置在其中,而且至少应将chars或ints数组放置在那里
我试图将输入转换为几乎所有内容,但仍然没有找到解决方法
谢谢
答案 0 :(得分:1)
类似这样的东西:
private static Dictionary<T, int> StuffToDictionary<T>(IEnumerable<T> input)
{
var dict = new Dictionary<T, int>();
foreach (var key in input)
{
if (dict.ContainsKey(key))
{
dict[key]++;
}
else
{
dict[key]=1;
}
}
return dict;
}
但是,您将无法在WriteLine
和其他内容中使用它,因为它没有有意义的ToString
覆盖。如果需要这些东西,最好创建一个专门的StuffDictionary
类,而不只是一个方法。
另一方面,尽管可以使用例外检查,尽管它可以工作,但它是一种非常昂贵的选择,如果有任何直接的方法,它也是一种反模式。