试图将任何东西的数组放入方法参数中
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 而不是仅仅一个方法。
另一方面,您不应该对此类检查使用异常,尽管它可以工作,但如果有任何直接方法,它是一个非常昂贵的替代方案和反模式。
我有一个小问题:我创建了这个方法
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 而不是仅仅一个方法。
另一方面,您不应该对此类检查使用异常,尽管它可以工作,但如果有任何直接方法,它是一个非常昂贵的替代方案和反模式。