试图将任何东西的数组放入方法参数中

Trying to put array of anything into method parameter

我有一个小问题:我创建了这个方法

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));

我应该如何更改我的代码(输入参数的类型、变量声明或其他),以便我至少可以在那里放置字符或整数数组,而不仅仅是对象类型变量数组

我尝试将输入转换为几乎所有内容,但仍未找到解决方案

谢谢

像这样:

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 class 而不是仅仅一个方法。

另一方面,您不应该对此类检查使用异常,尽管它可以工作,但如果有任何直接方法,它是一个非常昂贵的替代方案和反模式。