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

问题描述 投票:0回答:1

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

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

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

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

谢谢

c# dictionary generics type-conversion ienumerable
1个回答
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类,而不只是一个方法。

另一方面,尽管可以使用异常,但尽管可以使用,但它是一种非常昂贵的选择,并且如果有任何直接的方法,也可以使用反模式。

© www.soinside.com 2019 - 2024. All rights reserved.